/*
 * xmlunicode.c: this module implements the Unicode character APIs
 *
 * This file is automatically generated from the
 * UCS description files of the Unicode Character Database
 * http://www.unicode.org/Public/3.1-Update/UnicodeCharacterDatabase-3.1.0.html
 * using the genUnicode.py Python script.
 *
 * Generation date: Tue Apr 16 17:28:05 2002
 * Sources: Blocks-4.txt UnicodeData-3.1.0.txt
 * Daniel Veillard <veillard@redhat.com>
 */

#define IN_LIBXML
#include "libxml.h"

#ifdef LIBXML_UNICODE_ENABLED

#include <string.h>
#include "xmlversion.h"
#include "xmlunicode.h"

/**
 * xmlUCSIsAlphabeticPresentationForms:
 * @code: UCS code point
 *
 * Check whether the character is part of AlphabeticPresentationForms UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsAlphabeticPresentationForms(int code) {
    return((code >= 0xFB00) && (code <= 0xFB4F));
}

/**
 * xmlUCSIsArabic:
 * @code: UCS code point
 *
 * Check whether the character is part of Arabic UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsArabic(int code) {
    return((code >= 0x0600) && (code <= 0x06FF));
}

/**
 * xmlUCSIsArabicPresentationFormsA:
 * @code: UCS code point
 *
 * Check whether the character is part of ArabicPresentationForms-A UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsArabicPresentationFormsA(int code) {
    return((code >= 0xFB50) && (code <= 0xFDFF));
}

/**
 * xmlUCSIsArabicPresentationFormsB:
 * @code: UCS code point
 *
 * Check whether the character is part of ArabicPresentationForms-B UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsArabicPresentationFormsB(int code) {
    return((code >= 0xFE70) && (code <= 0xFEFE));
}

/**
 * xmlUCSIsArmenian:
 * @code: UCS code point
 *
 * Check whether the character is part of Armenian UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsArmenian(int code) {
    return((code >= 0x0530) && (code <= 0x058F));
}

/**
 * xmlUCSIsArrows:
 * @code: UCS code point
 *
 * Check whether the character is part of Arrows UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsArrows(int code) {
    return((code >= 0x2190) && (code <= 0x21FF));
}

/**
 * xmlUCSIsBasicLatin:
 * @code: UCS code point
 *
 * Check whether the character is part of BasicLatin UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsBasicLatin(int code) {
    return((code >= 0x0000) && (code <= 0x007F));
}

/**
 * xmlUCSIsBengali:
 * @code: UCS code point
 *
 * Check whether the character is part of Bengali UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsBengali(int code) {
    return((code >= 0x0980) && (code <= 0x09FF));
}

/**
 * xmlUCSIsBlockElements:
 * @code: UCS code point
 *
 * Check whether the character is part of BlockElements UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsBlockElements(int code) {
    return((code >= 0x2580) && (code <= 0x259F));
}

/**
 * xmlUCSIsBopomofo:
 * @code: UCS code point
 *
 * Check whether the character is part of Bopomofo UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsBopomofo(int code) {
    return((code >= 0x3100) && (code <= 0x312F));
}

/**
 * xmlUCSIsBopomofoExtended:
 * @code: UCS code point
 *
 * Check whether the character is part of BopomofoExtended UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsBopomofoExtended(int code) {
    return((code >= 0x31A0) && (code <= 0x31BF));
}

/**
 * xmlUCSIsBoxDrawing:
 * @code: UCS code point
 *
 * Check whether the character is part of BoxDrawing UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsBoxDrawing(int code) {
    return((code >= 0x2500) && (code <= 0x257F));
}

/**
 * xmlUCSIsBraillePatterns:
 * @code: UCS code point
 *
 * Check whether the character is part of BraillePatterns UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsBraillePatterns(int code) {
    return((code >= 0x2800) && (code <= 0x28FF));
}

/**
 * xmlUCSIsByzantineMusicalSymbols:
 * @code: UCS code point
 *
 * Check whether the character is part of ByzantineMusicalSymbols UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsByzantineMusicalSymbols(int code) {
    return((code >= 0x1D000) && (code <= 0x1D0FF));
}

/**
 * xmlUCSIsCJKCompatibility:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKCompatibility UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKCompatibility(int code) {
    return((code >= 0x3300) && (code <= 0x33FF));
}

/**
 * xmlUCSIsCJKCompatibilityForms:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKCompatibilityForms UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKCompatibilityForms(int code) {
    return((code >= 0xFE30) && (code <= 0xFE4F));
}

/**
 * xmlUCSIsCJKCompatibilityIdeographs:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKCompatibilityIdeographs UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKCompatibilityIdeographs(int code) {
    return((code >= 0xF900) && (code <= 0xFAFF));
}

/**
 * xmlUCSIsCJKCompatibilityIdeographsSupplement:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKCompatibilityIdeographsSupplement UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKCompatibilityIdeographsSupplement(int code) {
    return((code >= 0x2F800) && (code <= 0x2FA1F));
}

/**
 * xmlUCSIsCJKRadicalsSupplement:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKRadicalsSupplement UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKRadicalsSupplement(int code) {
    return((code >= 0x2E80) && (code <= 0x2EFF));
}

/**
 * xmlUCSIsCJKSymbolsandPunctuation:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKSymbolsandPunctuation UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKSymbolsandPunctuation(int code) {
    return((code >= 0x3000) && (code <= 0x303F));
}

/**
 * xmlUCSIsCJKUnifiedIdeographs:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKUnifiedIdeographs UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKUnifiedIdeographs(int code) {
    return((code >= 0x4E00) && (code <= 0x9FFF));
}

/**
 * xmlUCSIsCJKUnifiedIdeographsExtensionA:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKUnifiedIdeographsExtensionA UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKUnifiedIdeographsExtensionA(int code) {
    return((code >= 0x3400) && (code <= 0x4DB5));
}

/**
 * xmlUCSIsCJKUnifiedIdeographsExtensionB:
 * @code: UCS code point
 *
 * Check whether the character is part of CJKUnifiedIdeographsExtensionB UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCJKUnifiedIdeographsExtensionB(int code) {
    return((code >= 0x20000) && (code <= 0x2A6D6));
}

/**
 * xmlUCSIsCherokee:
 * @code: UCS code point
 *
 * Check whether the character is part of Cherokee UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCherokee(int code) {
    return((code >= 0x13A0) && (code <= 0x13FF));
}

/**
 * xmlUCSIsCombiningDiacriticalMarks:
 * @code: UCS code point
 *
 * Check whether the character is part of CombiningDiacriticalMarks UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCombiningDiacriticalMarks(int code) {
    return((code >= 0x0300) && (code <= 0x036F));
}

/**
 * xmlUCSIsCombiningHalfMarks:
 * @code: UCS code point
 *
 * Check whether the character is part of CombiningHalfMarks UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCombiningHalfMarks(int code) {
    return((code >= 0xFE20) && (code <= 0xFE2F));
}

/**
 * xmlUCSIsCombiningMarksforSymbols:
 * @code: UCS code point
 *
 * Check whether the character is part of CombiningMarksforSymbols UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCombiningMarksforSymbols(int code) {
    return((code >= 0x20D0) && (code <= 0x20FF));
}

/**
 * xmlUCSIsControlPictures:
 * @code: UCS code point
 *
 * Check whether the character is part of ControlPictures UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsControlPictures(int code) {
    return((code >= 0x2400) && (code <= 0x243F));
}

/**
 * xmlUCSIsCurrencySymbols:
 * @code: UCS code point
 *
 * Check whether the character is part of CurrencySymbols UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCurrencySymbols(int code) {
    return((code >= 0x20A0) && (code <= 0x20CF));
}

/**
 * xmlUCSIsCyrillic:
 * @code: UCS code point
 *
 * Check whether the character is part of Cyrillic UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCyrillic(int code) {
    return((code >= 0x0400) && (code <= 0x04FF));
}

/**
 * xmlUCSIsDeseret:
 * @code: UCS code point
 *
 * Check whether the character is part of Deseret UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsDeseret(int code) {
    return((code >= 0x10400) && (code <= 0x1044F));
}

/**
 * xmlUCSIsDevanagari:
 * @code: UCS code point
 *
 * Check whether the character is part of Devanagari UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsDevanagari(int code) {
    return((code >= 0x0900) && (code <= 0x097F));
}

/**
 * xmlUCSIsDingbats:
 * @code: UCS code point
 *
 * Check whether the character is part of Dingbats UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsDingbats(int code) {
    return((code >= 0x2700) && (code <= 0x27BF));
}

/**
 * xmlUCSIsEnclosedAlphanumerics:
 * @code: UCS code point
 *
 * Check whether the character is part of EnclosedAlphanumerics UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsEnclosedAlphanumerics(int code) {
    return((code >= 0x2460) && (code <= 0x24FF));
}

/**
 * xmlUCSIsEnclosedCJKLettersandMonths:
 * @code: UCS code point
 *
 * Check whether the character is part of EnclosedCJKLettersandMonths UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsEnclosedCJKLettersandMonths(int code) {
    return((code >= 0x3200) && (code <= 0x32FF));
}

/**
 * xmlUCSIsEthiopic:
 * @code: UCS code point
 *
 * Check whether the character is part of Ethiopic UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsEthiopic(int code) {
    return((code >= 0x1200) && (code <= 0x137F));
}

/**
 * xmlUCSIsGeneralPunctuation:
 * @code: UCS code point
 *
 * Check whether the character is part of GeneralPunctuation UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsGeneralPunctuation(int code) {
    return((code >= 0x2000) && (code <= 0x206F));
}

/**
 * xmlUCSIsGeometricShapes:
 * @code: UCS code point
 *
 * Check whether the character is part of GeometricShapes UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsGeometricShapes(int code) {
    return((code >= 0x25A0) && (code <= 0x25FF));
}

/**
 * xmlUCSIsGeorgian:
 * @code: UCS code point
 *
 * Check whether the character is part of Georgian UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsGeorgian(int code) {
    return((code >= 0x10A0) && (code <= 0x10FF));
}

/**
 * xmlUCSIsGothic:
 * @code: UCS code point
 *
 * Check whether the character is part of Gothic UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsGothic(int code) {
    return((code >= 0x10330) && (code <= 0x1034F));
}

/**
 * xmlUCSIsGreek:
 * @code: UCS code point
 *
 * Check whether the character is part of Greek UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsGreek(int code) {
    return((code >= 0x0370) && (code <= 0x03FF));
}

/**
 * xmlUCSIsGreekExtended:
 * @code: UCS code point
 *
 * Check whether the character is part of GreekExtended UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsGreekExtended(int code) {
    return((code >= 0x1F00) && (code <= 0x1FFF));
}

/**
 * xmlUCSIsGujarati:
 * @code: UCS code point
 *
 * Check whether the character is part of Gujarati UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsGujarati(int code) {
    return((code >= 0x0A80) && (code <= 0x0AFF));
}

/**
 * xmlUCSIsGurmukhi:
 * @code: UCS code point
 *
 * Check whether the character is part of Gurmukhi UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsGurmukhi(int code) {
    return((code >= 0x0A00) && (code <= 0x0A7F));
}

/**
 * xmlUCSIsHalfwidthandFullwidthForms:
 * @code: UCS code point
 *
 * Check whether the character is part of HalfwidthandFullwidthForms UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsHalfwidthandFullwidthForms(int code) {
    return((code >= 0xFF00) && (code <= 0xFFEF));
}

/**
 * xmlUCSIsHangulCompatibilityJamo:
 * @code: UCS code point
 *
 * Check whether the character is part of HangulCompatibilityJamo UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsHangulCompatibilityJamo(int code) {
    return((code >= 0x3130) && (code <= 0x318F));
}

/**
 * xmlUCSIsHangulJamo:
 * @code: UCS code point
 *
 * Check whether the character is part of HangulJamo UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsHangulJamo(int code) {
    return((code >= 0x1100) && (code <= 0x11FF));
}

/**
 * xmlUCSIsHangulSyllables:
 * @code: UCS code point
 *
 * Check whether the character is part of HangulSyllables UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsHangulSyllables(int code) {
    return((code >= 0xAC00) && (code <= 0xD7A3));
}

/**
 * xmlUCSIsHebrew:
 * @code: UCS code point
 *
 * Check whether the character is part of Hebrew UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsHebrew(int code) {
    return((code >= 0x0590) && (code <= 0x05FF));
}

/**
 * xmlUCSIsHighPrivateUseSurrogates:
 * @code: UCS code point
 *
 * Check whether the character is part of HighPrivateUseSurrogates UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsHighPrivateUseSurrogates(int code) {
    return((code >= 0xDB80) && (code <= 0xDBFF));
}

/**
 * xmlUCSIsHighSurrogates:
 * @code: UCS code point
 *
 * Check whether the character is part of HighSurrogates UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsHighSurrogates(int code) {
    return((code >= 0xD800) && (code <= 0xDB7F));
}

/**
 * xmlUCSIsHiragana:
 * @code: UCS code point
 *
 * Check whether the character is part of Hiragana UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsHiragana(int code) {
    return((code >= 0x3040) && (code <= 0x309F));
}

/**
 * xmlUCSIsIPAExtensions:
 * @code: UCS code point
 *
 * Check whether the character is part of IPAExtensions UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsIPAExtensions(int code) {
    return((code >= 0x0250) && (code <= 0x02AF));
}

/**
 * xmlUCSIsIdeographicDescriptionCharacters:
 * @code: UCS code point
 *
 * Check whether the character is part of IdeographicDescriptionCharacters UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsIdeographicDescriptionCharacters(int code) {
    return((code >= 0x2FF0) && (code <= 0x2FFF));
}

/**
 * xmlUCSIsKanbun:
 * @code: UCS code point
 *
 * Check whether the character is part of Kanbun UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsKanbun(int code) {
    return((code >= 0x3190) && (code <= 0x319F));
}

/**
 * xmlUCSIsKangxiRadicals:
 * @code: UCS code point
 *
 * Check whether the character is part of KangxiRadicals UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsKangxiRadicals(int code) {
    return((code >= 0x2F00) && (code <= 0x2FDF));
}

/**
 * xmlUCSIsKannada:
 * @code: UCS code point
 *
 * Check whether the character is part of Kannada UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsKannada(int code) {
    return((code >= 0x0C80) && (code <= 0x0CFF));
}

/**
 * xmlUCSIsKatakana:
 * @code: UCS code point
 *
 * Check whether the character is part of Katakana UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsKatakana(int code) {
    return((code >= 0x30A0) && (code <= 0x30FF));
}

/**
 * xmlUCSIsKhmer:
 * @code: UCS code point
 *
 * Check whether the character is part of Khmer UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsKhmer(int code) {
    return((code >= 0x1780) && (code <= 0x17FF));
}

/**
 * xmlUCSIsLao:
 * @code: UCS code point
 *
 * Check whether the character is part of Lao UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsLao(int code) {
    return((code >= 0x0E80) && (code <= 0x0EFF));
}

/**
 * xmlUCSIsLatin1Supplement:
 * @code: UCS code point
 *
 * Check whether the character is part of Latin-1Supplement UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsLatin1Supplement(int code) {
    return((code >= 0x0080) && (code <= 0x00FF));
}

/**
 * xmlUCSIsLatinExtendedA:
 * @code: UCS code point
 *
 * Check whether the character is part of LatinExtended-A UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsLatinExtendedA(int code) {
    return((code >= 0x0100) && (code <= 0x017F));
}

/**
 * xmlUCSIsLatinExtendedB:
 * @code: UCS code point
 *
 * Check whether the character is part of LatinExtended-B UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsLatinExtendedB(int code) {
    return((code >= 0x0180) && (code <= 0x024F));
}

/**
 * xmlUCSIsLatinExtendedAdditional:
 * @code: UCS code point
 *
 * Check whether the character is part of LatinExtendedAdditional UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsLatinExtendedAdditional(int code) {
    return((code >= 0x1E00) && (code <= 0x1EFF));
}

/**
 * xmlUCSIsLetterlikeSymbols:
 * @code: UCS code point
 *
 * Check whether the character is part of LetterlikeSymbols UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsLetterlikeSymbols(int code) {
    return((code >= 0x2100) && (code <= 0x214F));
}

/**
 * xmlUCSIsLowSurrogates:
 * @code: UCS code point
 *
 * Check whether the character is part of LowSurrogates UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsLowSurrogates(int code) {
    return((code >= 0xDC00) && (code <= 0xDFFF));
}

/**
 * xmlUCSIsMalayalam:
 * @code: UCS code point
 *
 * Check whether the character is part of Malayalam UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsMalayalam(int code) {
    return((code >= 0x0D00) && (code <= 0x0D7F));
}

/**
 * xmlUCSIsMathematicalAlphanumericSymbols:
 * @code: UCS code point
 *
 * Check whether the character is part of MathematicalAlphanumericSymbols UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsMathematicalAlphanumericSymbols(int code) {
    return((code >= 0x1D400) && (code <= 0x1D7FF));
}

/**
 * xmlUCSIsMathematicalOperators:
 * @code: UCS code point
 *
 * Check whether the character is part of MathematicalOperators UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsMathematicalOperators(int code) {
    return((code >= 0x2200) && (code <= 0x22FF));
}

/**
 * xmlUCSIsMiscellaneousSymbols:
 * @code: UCS code point
 *
 * Check whether the character is part of MiscellaneousSymbols UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsMiscellaneousSymbols(int code) {
    return((code >= 0x2600) && (code <= 0x26FF));
}

/**
 * xmlUCSIsMiscellaneousTechnical:
 * @code: UCS code point
 *
 * Check whether the character is part of MiscellaneousTechnical UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsMiscellaneousTechnical(int code) {
    return((code >= 0x2300) && (code <= 0x23FF));
}

/**
 * xmlUCSIsMongolian:
 * @code: UCS code point
 *
 * Check whether the character is part of Mongolian UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsMongolian(int code) {
    return((code >= 0x1800) && (code <= 0x18AF));
}

/**
 * xmlUCSIsMusicalSymbols:
 * @code: UCS code point
 *
 * Check whether the character is part of MusicalSymbols UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsMusicalSymbols(int code) {
    return((code >= 0x1D100) && (code <= 0x1D1FF));
}

/**
 * xmlUCSIsMyanmar:
 * @code: UCS code point
 *
 * Check whether the character is part of Myanmar UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsMyanmar(int code) {
    return((code >= 0x1000) && (code <= 0x109F));
}

/**
 * xmlUCSIsNumberForms:
 * @code: UCS code point
 *
 * Check whether the character is part of NumberForms UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsNumberForms(int code) {
    return((code >= 0x2150) && (code <= 0x218F));
}

/**
 * xmlUCSIsOgham:
 * @code: UCS code point
 *
 * Check whether the character is part of Ogham UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsOgham(int code) {
    return((code >= 0x1680) && (code <= 0x169F));
}

/**
 * xmlUCSIsOldItalic:
 * @code: UCS code point
 *
 * Check whether the character is part of OldItalic UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsOldItalic(int code) {
    return((code >= 0x10300) && (code <= 0x1032F));
}

/**
 * xmlUCSIsOpticalCharacterRecognition:
 * @code: UCS code point
 *
 * Check whether the character is part of OpticalCharacterRecognition UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsOpticalCharacterRecognition(int code) {
    return((code >= 0x2440) && (code <= 0x245F));
}

/**
 * xmlUCSIsOriya:
 * @code: UCS code point
 *
 * Check whether the character is part of Oriya UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsOriya(int code) {
    return((code >= 0x0B00) && (code <= 0x0B7F));
}

/**
 * xmlUCSIsPrivateUse:
 * @code: UCS code point
 *
 * Check whether the character is part of PrivateUse UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsPrivateUse(int code) {
    return((code >= 0x100000) && (code <= 0x10FFFD));
}

/**
 * xmlUCSIsRunic:
 * @code: UCS code point
 *
 * Check whether the character is part of Runic UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsRunic(int code) {
    return((code >= 0x16A0) && (code <= 0x16FF));
}

/**
 * xmlUCSIsSinhala:
 * @code: UCS code point
 *
 * Check whether the character is part of Sinhala UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsSinhala(int code) {
    return((code >= 0x0D80) && (code <= 0x0DFF));
}

/**
 * xmlUCSIsSmallFormVariants:
 * @code: UCS code point
 *
 * Check whether the character is part of SmallFormVariants UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsSmallFormVariants(int code) {
    return((code >= 0xFE50) && (code <= 0xFE6F));
}

/**
 * xmlUCSIsSpacingModifierLetters:
 * @code: UCS code point
 *
 * Check whether the character is part of SpacingModifierLetters UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsSpacingModifierLetters(int code) {
    return((code >= 0x02B0) && (code <= 0x02FF));
}

/**
 * xmlUCSIsSpecials:
 * @code: UCS code point
 *
 * Check whether the character is part of Specials UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsSpecials(int code) {
    return((code >= 0xFFF0) && (code <= 0xFFFD));
}

/**
 * xmlUCSIsSuperscriptsandSubscripts:
 * @code: UCS code point
 *
 * Check whether the character is part of SuperscriptsandSubscripts UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsSuperscriptsandSubscripts(int code) {
    return((code >= 0x2070) && (code <= 0x209F));
}

/**
 * xmlUCSIsSyriac:
 * @code: UCS code point
 *
 * Check whether the character is part of Syriac UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsSyriac(int code) {
    return((code >= 0x0700) && (code <= 0x074F));
}

/**
 * xmlUCSIsTags:
 * @code: UCS code point
 *
 * Check whether the character is part of Tags UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsTags(int code) {
    return((code >= 0xE0000) && (code <= 0xE007F));
}

/**
 * xmlUCSIsTamil:
 * @code: UCS code point
 *
 * Check whether the character is part of Tamil UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsTamil(int code) {
    return((code >= 0x0B80) && (code <= 0x0BFF));
}

/**
 * xmlUCSIsTelugu:
 * @code: UCS code point
 *
 * Check whether the character is part of Telugu UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsTelugu(int code) {
    return((code >= 0x0C00) && (code <= 0x0C7F));
}

/**
 * xmlUCSIsThaana:
 * @code: UCS code point
 *
 * Check whether the character is part of Thaana UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsThaana(int code) {
    return((code >= 0x0780) && (code <= 0x07BF));
}

/**
 * xmlUCSIsThai:
 * @code: UCS code point
 *
 * Check whether the character is part of Thai UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsThai(int code) {
    return((code >= 0x0E00) && (code <= 0x0E7F));
}

/**
 * xmlUCSIsTibetan:
 * @code: UCS code point
 *
 * Check whether the character is part of Tibetan UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsTibetan(int code) {
    return((code >= 0x0F00) && (code <= 0x0FFF));
}

/**
 * xmlUCSIsUnifiedCanadianAboriginalSyllabics:
 * @code: UCS code point
 *
 * Check whether the character is part of UnifiedCanadianAboriginalSyllabics UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsUnifiedCanadianAboriginalSyllabics(int code) {
    return((code >= 0x1400) && (code <= 0x167F));
}

/**
 * xmlUCSIsYiRadicals:
 * @code: UCS code point
 *
 * Check whether the character is part of YiRadicals UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsYiRadicals(int code) {
    return((code >= 0xA490) && (code <= 0xA4CF));
}

/**
 * xmlUCSIsYiSyllables:
 * @code: UCS code point
 *
 * Check whether the character is part of YiSyllables UCS Block
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsYiSyllables(int code) {
    return((code >= 0xA000) && (code <= 0xA48F));
}

/**
 * xmlUCSIsBlock:
 * @code: UCS code point
 * @block: UCS block name
 *
 * Check whether the caracter is part of the UCS Block
 *
 * Returns 1 if true, 0 if false and -1 on unknown block
 */
int
xmlUCSIsBlock(int code, const char *block) {
    if (!strcmp(block, "AlphabeticPresentationForms"))
        return(xmlUCSIsAlphabeticPresentationForms(code));
    if (!strcmp(block, "Arabic"))
        return(xmlUCSIsArabic(code));
    if (!strcmp(block, "ArabicPresentationForms-A"))
        return(xmlUCSIsArabicPresentationFormsA(code));
    if (!strcmp(block, "ArabicPresentationForms-B"))
        return(xmlUCSIsArabicPresentationFormsB(code));
    if (!strcmp(block, "Armenian"))
        return(xmlUCSIsArmenian(code));
    if (!strcmp(block, "Arrows"))
        return(xmlUCSIsArrows(code));
    if (!strcmp(block, "BasicLatin"))
        return(xmlUCSIsBasicLatin(code));
    if (!strcmp(block, "Bengali"))
        return(xmlUCSIsBengali(code));
    if (!strcmp(block, "BlockElements"))
        return(xmlUCSIsBlockElements(code));
    if (!strcmp(block, "Bopomofo"))
        return(xmlUCSIsBopomofo(code));
    if (!strcmp(block, "BopomofoExtended"))
        return(xmlUCSIsBopomofoExtended(code));
    if (!strcmp(block, "BoxDrawing"))
        return(xmlUCSIsBoxDrawing(code));
    if (!strcmp(block, "BraillePatterns"))
        return(xmlUCSIsBraillePatterns(code));
    if (!strcmp(block, "ByzantineMusicalSymbols"))
        return(xmlUCSIsByzantineMusicalSymbols(code));
    if (!strcmp(block, "CJKCompatibility"))
        return(xmlUCSIsCJKCompatibility(code));
    if (!strcmp(block, "CJKCompatibilityForms"))
        return(xmlUCSIsCJKCompatibilityForms(code));
    if (!strcmp(block, "CJKCompatibilityIdeographs"))
        return(xmlUCSIsCJKCompatibilityIdeographs(code));
    if (!strcmp(block, "CJKCompatibilityIdeographsSupplement"))
        return(xmlUCSIsCJKCompatibilityIdeographsSupplement(code));
    if (!strcmp(block, "CJKRadicalsSupplement"))
        return(xmlUCSIsCJKRadicalsSupplement(code));
    if (!strcmp(block, "CJKSymbolsandPunctuation"))
        return(xmlUCSIsCJKSymbolsandPunctuation(code));
    if (!strcmp(block, "CJKUnifiedIdeographs"))
        return(xmlUCSIsCJKUnifiedIdeographs(code));
    if (!strcmp(block, "CJKUnifiedIdeographsExtensionA"))
        return(xmlUCSIsCJKUnifiedIdeographsExtensionA(code));
    if (!strcmp(block, "CJKUnifiedIdeographsExtensionB"))
        return(xmlUCSIsCJKUnifiedIdeographsExtensionB(code));
    if (!strcmp(block, "Cherokee"))
        return(xmlUCSIsCherokee(code));
    if (!strcmp(block, "CombiningDiacriticalMarks"))
        return(xmlUCSIsCombiningDiacriticalMarks(code));
    if (!strcmp(block, "CombiningHalfMarks"))
        return(xmlUCSIsCombiningHalfMarks(code));
    if (!strcmp(block, "CombiningMarksforSymbols"))
        return(xmlUCSIsCombiningMarksforSymbols(code));
    if (!strcmp(block, "ControlPictures"))
        return(xmlUCSIsControlPictures(code));
    if (!strcmp(block, "CurrencySymbols"))
        return(xmlUCSIsCurrencySymbols(code));
    if (!strcmp(block, "Cyrillic"))
        return(xmlUCSIsCyrillic(code));
    if (!strcmp(block, "Deseret"))
        return(xmlUCSIsDeseret(code));
    if (!strcmp(block, "Devanagari"))
        return(xmlUCSIsDevanagari(code));
    if (!strcmp(block, "Dingbats"))
        return(xmlUCSIsDingbats(code));
    if (!strcmp(block, "EnclosedAlphanumerics"))
        return(xmlUCSIsEnclosedAlphanumerics(code));
    if (!strcmp(block, "EnclosedCJKLettersandMonths"))
        return(xmlUCSIsEnclosedCJKLettersandMonths(code));
    if (!strcmp(block, "Ethiopic"))
        return(xmlUCSIsEthiopic(code));
    if (!strcmp(block, "GeneralPunctuation"))
        return(xmlUCSIsGeneralPunctuation(code));
    if (!strcmp(block, "GeometricShapes"))
        return(xmlUCSIsGeometricShapes(code));
    if (!strcmp(block, "Georgian"))
        return(xmlUCSIsGeorgian(code));
    if (!strcmp(block, "Gothic"))
        return(xmlUCSIsGothic(code));
    if (!strcmp(block, "Greek"))
        return(xmlUCSIsGreek(code));
    if (!strcmp(block, "GreekExtended"))
        return(xmlUCSIsGreekExtended(code));
    if (!strcmp(block, "Gujarati"))
        return(xmlUCSIsGujarati(code));
    if (!strcmp(block, "Gurmukhi"))
        return(xmlUCSIsGurmukhi(code));
    if (!strcmp(block, "HalfwidthandFullwidthForms"))
        return(xmlUCSIsHalfwidthandFullwidthForms(code));
    if (!strcmp(block, "HangulCompatibilityJamo"))
        return(xmlUCSIsHangulCompatibilityJamo(code));
    if (!strcmp(block, "HangulJamo"))
        return(xmlUCSIsHangulJamo(code));
    if (!strcmp(block, "HangulSyllables"))
        return(xmlUCSIsHangulSyllables(code));
    if (!strcmp(block, "Hebrew"))
        return(xmlUCSIsHebrew(code));
    if (!strcmp(block, "HighPrivateUseSurrogates"))
        return(xmlUCSIsHighPrivateUseSurrogates(code));
    if (!strcmp(block, "HighSurrogates"))
        return(xmlUCSIsHighSurrogates(code));
    if (!strcmp(block, "Hiragana"))
        return(xmlUCSIsHiragana(code));
    if (!strcmp(block, "IPAExtensions"))
        return(xmlUCSIsIPAExtensions(code));
    if (!strcmp(block, "IdeographicDescriptionCharacters"))
        return(xmlUCSIsIdeographicDescriptionCharacters(code));
    if (!strcmp(block, "Kanbun"))
        return(xmlUCSIsKanbun(code));
    if (!strcmp(block, "KangxiRadicals"))
        return(xmlUCSIsKangxiRadicals(code));
    if (!strcmp(block, "Kannada"))
        return(xmlUCSIsKannada(code));
    if (!strcmp(block, "Katakana"))
        return(xmlUCSIsKatakana(code));
    if (!strcmp(block, "Khmer"))
        return(xmlUCSIsKhmer(code));
    if (!strcmp(block, "Lao"))
        return(xmlUCSIsLao(code));
    if (!strcmp(block, "Latin-1Supplement"))
        return(xmlUCSIsLatin1Supplement(code));
    if (!strcmp(block, "LatinExtended-A"))
        return(xmlUCSIsLatinExtendedA(code));
    if (!strcmp(block, "LatinExtended-B"))
        return(xmlUCSIsLatinExtendedB(code));
    if (!strcmp(block, "LatinExtendedAdditional"))
        return(xmlUCSIsLatinExtendedAdditional(code));
    if (!strcmp(block, "LetterlikeSymbols"))
        return(xmlUCSIsLetterlikeSymbols(code));
    if (!strcmp(block, "LowSurrogates"))
        return(xmlUCSIsLowSurrogates(code));
    if (!strcmp(block, "Malayalam"))
        return(xmlUCSIsMalayalam(code));
    if (!strcmp(block, "MathematicalAlphanumericSymbols"))
        return(xmlUCSIsMathematicalAlphanumericSymbols(code));
    if (!strcmp(block, "MathematicalOperators"))
        return(xmlUCSIsMathematicalOperators(code));
    if (!strcmp(block, "MiscellaneousSymbols"))
        return(xmlUCSIsMiscellaneousSymbols(code));
    if (!strcmp(block, "MiscellaneousTechnical"))
        return(xmlUCSIsMiscellaneousTechnical(code));
    if (!strcmp(block, "Mongolian"))
        return(xmlUCSIsMongolian(code));
    if (!strcmp(block, "MusicalSymbols"))
        return(xmlUCSIsMusicalSymbols(code));
    if (!strcmp(block, "Myanmar"))
        return(xmlUCSIsMyanmar(code));
    if (!strcmp(block, "NumberForms"))
        return(xmlUCSIsNumberForms(code));
    if (!strcmp(block, "Ogham"))
        return(xmlUCSIsOgham(code));
    if (!strcmp(block, "OldItalic"))
        return(xmlUCSIsOldItalic(code));
    if (!strcmp(block, "OpticalCharacterRecognition"))
        return(xmlUCSIsOpticalCharacterRecognition(code));
    if (!strcmp(block, "Oriya"))
        return(xmlUCSIsOriya(code));
    if (!strcmp(block, "PrivateUse"))
        return(xmlUCSIsPrivateUse(code));
    if (!strcmp(block, "Runic"))
        return(xmlUCSIsRunic(code));
    if (!strcmp(block, "Sinhala"))
        return(xmlUCSIsSinhala(code));
    if (!strcmp(block, "SmallFormVariants"))
        return(xmlUCSIsSmallFormVariants(code));
    if (!strcmp(block, "SpacingModifierLetters"))
        return(xmlUCSIsSpacingModifierLetters(code));
    if (!strcmp(block, "Specials"))
        return(xmlUCSIsSpecials(code));
    if (!strcmp(block, "SuperscriptsandSubscripts"))
        return(xmlUCSIsSuperscriptsandSubscripts(code));
    if (!strcmp(block, "Syriac"))
        return(xmlUCSIsSyriac(code));
    if (!strcmp(block, "Tags"))
        return(xmlUCSIsTags(code));
    if (!strcmp(block, "Tamil"))
        return(xmlUCSIsTamil(code));
    if (!strcmp(block, "Telugu"))
        return(xmlUCSIsTelugu(code));
    if (!strcmp(block, "Thaana"))
        return(xmlUCSIsThaana(code));
    if (!strcmp(block, "Thai"))
        return(xmlUCSIsThai(code));
    if (!strcmp(block, "Tibetan"))
        return(xmlUCSIsTibetan(code));
    if (!strcmp(block, "UnifiedCanadianAboriginalSyllabics"))
        return(xmlUCSIsUnifiedCanadianAboriginalSyllabics(code));
    if (!strcmp(block, "YiRadicals"))
        return(xmlUCSIsYiRadicals(code));
    if (!strcmp(block, "YiSyllables"))
        return(xmlUCSIsYiSyllables(code));
    return(-1);
}

/**
 * xmlUCSIsCatC:
 * @code: UCS code point
 *
 * Check whether the character is part of C UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatC(int code) {
    return(((code >= 0x0) && (code <= 0x1f)) ||
           ((code >= 0x7f) && (code <= 0x9f)) ||
           (code == 0x70f) ||
           ((code >= 0x180b) && (code <= 0x180e)) ||
           ((code >= 0x200c) && (code <= 0x200f)) ||
           ((code >= 0x202a) && (code <= 0x202e)) ||
           ((code >= 0x206a) && (code <= 0x206f)) ||
           (code == 0xd800) ||
           ((code >= 0xdb7f) && (code <= 0xdb80)) ||
           ((code >= 0xdbff) && (code <= 0xdc00)) ||
           ((code >= 0xdfff) && (code <= 0xe000)) ||
           (code == 0xf8ff) ||
           (code == 0xfeff) ||
           ((code >= 0xfff9) && (code <= 0xfffb)) ||
           ((code >= 0x1d173) && (code <= 0x1d17a)) ||
           (code == 0xe0001) ||
           ((code >= 0xe0020) && (code <= 0xe007f)) ||
           (code == 0xf0000) ||
           (code == 0xffffd) ||
           (code == 0x100000) ||
           (code == 0x10fffd));
}

/**
 * xmlUCSIsCatCc:
 * @code: UCS code point
 *
 * Check whether the character is part of Cc UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatCc(int code) {
    return(((code >= 0x0) && (code <= 0x1f)) ||
           ((code >= 0x7f) && (code <= 0x9f)));
}

/**
 * xmlUCSIsCatCf:
 * @code: UCS code point
 *
 * Check whether the character is part of Cf UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatCf(int code) {
    return((code == 0x70f) ||
           ((code >= 0x180b) && (code <= 0x180e)) ||
           ((code >= 0x200c) && (code <= 0x200f)) ||
           ((code >= 0x202a) && (code <= 0x202e)) ||
           ((code >= 0x206a) && (code <= 0x206f)) ||
           (code == 0xfeff) ||
           ((code >= 0xfff9) && (code <= 0xfffb)) ||
           ((code >= 0x1d173) && (code <= 0x1d17a)) ||
           (code == 0xe0001) ||
           ((code >= 0xe0020) && (code <= 0xe007f)));
}

/**
 * xmlUCSIsCatCo:
 * @code: UCS code point
 *
 * Check whether the character is part of Co UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatCo(int code) {
    return((code == 0xe000) ||
           (code == 0xf8ff) ||
           (code == 0xf0000) ||
           (code == 0xffffd) ||
           (code == 0x100000) ||
           (code == 0x10fffd));
}

/**
 * xmlUCSIsCatCs:
 * @code: UCS code point
 *
 * Check whether the character is part of Cs UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatCs(int code) {
    return((code == 0xd800) ||
           ((code >= 0xdb7f) && (code <= 0xdb80)) ||
           ((code >= 0xdbff) && (code <= 0xdc00)) ||
           (code == 0xdfff));
}

/**
 * xmlUCSIsCatL:
 * @code: UCS code point
 *
 * Check whether the character is part of L UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatL(int code) {
    return(((code >= 0x41) && (code <= 0x5a)) ||
           ((code >= 0x61) && (code <= 0x7a)) ||
           (code == 0xaa) ||
           (code == 0xb5) ||
           (code == 0xba) ||
           ((code >= 0xc0) && (code <= 0xd6)) ||
           ((code >= 0xd8) && (code <= 0xf6)) ||
           ((code >= 0xf8) && (code <= 0x21f)) ||
           ((code >= 0x222) && (code <= 0x233)) ||
           ((code >= 0x250) && (code <= 0x2ad)) ||
           ((code >= 0x2b0) && (code <= 0x2b8)) ||
           ((code >= 0x2bb) && (code <= 0x2c1)) ||
           ((code >= 0x2d0) && (code <= 0x2d1)) ||
           ((code >= 0x2e0) && (code <= 0x2e4)) ||
           (code == 0x2ee) ||
           (code == 0x37a) ||
           (code == 0x386) ||
           ((code >= 0x388) && (code <= 0x38a)) ||
           (code == 0x38c) ||
           ((code >= 0x38e) && (code <= 0x3a1)) ||
           ((code >= 0x3a3) && (code <= 0x3ce)) ||
           ((code >= 0x3d0) && (code <= 0x3d7)) ||
           ((code >= 0x3da) && (code <= 0x3f5)) ||
           ((code >= 0x400) && (code <= 0x481)) ||
           ((code >= 0x48c) && (code <= 0x4c4)) ||
           ((code >= 0x4c7) && (code <= 0x4c8)) ||
           ((code >= 0x4cb) && (code <= 0x4cc)) ||
           ((code >= 0x4d0) && (code <= 0x4f5)) ||
           ((code >= 0x4f8) && (code <= 0x4f9)) ||
           ((code >= 0x531) && (code <= 0x556)) ||
           (code == 0x559) ||
           ((code >= 0x561) && (code <= 0x587)) ||
           ((code >= 0x5d0) && (code <= 0x5ea)) ||
           ((code >= 0x5f0) && (code <= 0x5f2)) ||
           ((code >= 0x621) && (code <= 0x63a)) ||
           ((code >= 0x640) && (code <= 0x64a)) ||
           ((code >= 0x671) && (code <= 0x6d3)) ||
           (code == 0x6d5) ||
           ((code >= 0x6e5) && (code <= 0x6e6)) ||
           ((code >= 0x6fa) && (code <= 0x6fc)) ||
           (code == 0x710) ||
           ((code >= 0x712) && (code <= 0x72c)) ||
           ((code >= 0x780) && (code <= 0x7a5)) ||
           ((code >= 0x905) && (code <= 0x939)) ||
           (code == 0x93d) ||
           (code == 0x950) ||
           ((code >= 0x958) && (code <= 0x961)) ||
           ((code >= 0x985) && (code <= 0x98c)) ||
           ((code >= 0x98f) && (code <= 0x990)) ||
           ((code >= 0x993) && (code <= 0x9a8)) ||
           ((code >= 0x9aa) && (code <= 0x9b0)) ||
           (code == 0x9b2) ||
           ((code >= 0x9b6) && (code <= 0x9b9)) ||
           ((code >= 0x9dc) && (code <= 0x9dd)) ||
           ((code >= 0x9df) && (code <= 0x9e1)) ||
           ((code >= 0x9f0) && (code <= 0x9f1)) ||
           ((code >= 0xa05) && (code <= 0xa0a)) ||
           ((code >= 0xa0f) && (code <= 0xa10)) ||
           ((code >= 0xa13) && (code <= 0xa28)) ||
           ((code >= 0xa2a) && (code <= 0xa30)) ||
           ((code >= 0xa32) && (code <= 0xa33)) ||
           ((code >= 0xa35) && (code <= 0xa36)) ||
           ((code >= 0xa38) && (code <= 0xa39)) ||
           ((code >= 0xa59) && (code <= 0xa5c)) ||
           (code == 0xa5e) ||
           ((code >= 0xa72) && (code <= 0xa74)) ||
           ((code >= 0xa85) && (code <= 0xa8b)) ||
           (code == 0xa8d) ||
           ((code >= 0xa8f) && (code <= 0xa91)) ||
           ((code >= 0xa93) && (code <= 0xaa8)) ||
           ((code >= 0xaaa) && (code <= 0xab0)) ||
           ((code >= 0xab2) && (code <= 0xab3)) ||
           ((code >= 0xab5) && (code <= 0xab9)) ||
           (code == 0xabd) ||
           (code == 0xad0) ||
           (code == 0xae0) ||
           ((code >= 0xb05) && (code <= 0xb0c)) ||
           ((code >= 0xb0f) && (code <= 0xb10)) ||
           ((code >= 0xb13) && (code <= 0xb28)) ||
           ((code >= 0xb2a) && (code <= 0xb30)) ||
           ((code >= 0xb32) && (code <= 0xb33)) ||
           ((code >= 0xb36) && (code <= 0xb39)) ||
           (code == 0xb3d) ||
           ((code >= 0xb5c) && (code <= 0xb5d)) ||
           ((code >= 0xb5f) && (code <= 0xb61)) ||
           ((code >= 0xb85) && (code <= 0xb8a)) ||
           ((code >= 0xb8e) && (code <= 0xb90)) ||
           ((code >= 0xb92) && (code <= 0xb95)) ||
           ((code >= 0xb99) && (code <= 0xb9a)) ||
           (code == 0xb9c) ||
           ((code >= 0xb9e) && (code <= 0xb9f)) ||
           ((code >= 0xba3) && (code <= 0xba4)) ||
           ((code >= 0xba8) && (code <= 0xbaa)) ||
           ((code >= 0xbae) && (code <= 0xbb5)) ||
           ((code >= 0xbb7) && (code <= 0xbb9)) ||
           ((code >= 0xc05) && (code <= 0xc0c)) ||
           ((code >= 0xc0e) && (code <= 0xc10)) ||
           ((code >= 0xc12) && (code <= 0xc28)) ||
           ((code >= 0xc2a) && (code <= 0xc33)) ||
           ((code >= 0xc35) && (code <= 0xc39)) ||
           ((code >= 0xc60) && (code <= 0xc61)) ||
           ((code >= 0xc85) && (code <= 0xc8c)) ||
           ((code >= 0xc8e) && (code <= 0xc90)) ||
           ((code >= 0xc92) && (code <= 0xca8)) ||
           ((code >= 0xcaa) && (code <= 0xcb3)) ||
           ((code >= 0xcb5) && (code <= 0xcb9)) ||
           (code == 0xcde) ||
           ((code >= 0xce0) && (code <= 0xce1)) ||
           ((code >= 0xd05) && (code <= 0xd0c)) ||
           ((code >= 0xd0e) && (code <= 0xd10)) ||
           ((code >= 0xd12) && (code <= 0xd28)) ||
           ((code >= 0xd2a) && (code <= 0xd39)) ||
           ((code >= 0xd60) && (code <= 0xd61)) ||
           ((code >= 0xd85) && (code <= 0xd96)) ||
           ((code >= 0xd9a) && (code <= 0xdb1)) ||
           ((code >= 0xdb3) && (code <= 0xdbb)) ||
           (code == 0xdbd) ||
           ((code >= 0xdc0) && (code <= 0xdc6)) ||
           ((code >= 0xe01) && (code <= 0xe30)) ||
           ((code >= 0xe32) && (code <= 0xe33)) ||
           ((code >= 0xe40) && (code <= 0xe46)) ||
           ((code >= 0xe81) && (code <= 0xe82)) ||
           (code == 0xe84) ||
           ((code >= 0xe87) && (code <= 0xe88)) ||
           (code == 0xe8a) ||
           (code == 0xe8d) ||
           ((code >= 0xe94) && (code <= 0xe97)) ||
           ((code >= 0xe99) && (code <= 0xe9f)) ||
           ((code >= 0xea1) && (code <= 0xea3)) ||
           (code == 0xea5) ||
           (code == 0xea7) ||
           ((code >= 0xeaa) && (code <= 0xeab)) ||
           ((code >= 0xead) && (code <= 0xeb0)) ||
           ((code >= 0xeb2) && (code <= 0xeb3)) ||
           (code == 0xebd) ||
           ((code >= 0xec0) && (code <= 0xec4)) ||
           (code == 0xec6) ||
           ((code >= 0xedc) && (code <= 0xedd)) ||
           (code == 0xf00) ||
           ((code >= 0xf40) && (code <= 0xf47)) ||
           ((code >= 0xf49) && (code <= 0xf6a)) ||
           ((code >= 0xf88) && (code <= 0xf8b)) ||
           ((code >= 0x1000) && (code <= 0x1021)) ||
           ((code >= 0x1023) && (code <= 0x1027)) ||
           ((code >= 0x1029) && (code <= 0x102a)) ||
           ((code >= 0x1050) && (code <= 0x1055)) ||
           ((code >= 0x10a0) && (code <= 0x10c5)) ||
           ((code >= 0x10d0) && (code <= 0x10f6)) ||
           ((code >= 0x1100) && (code <= 0x1159)) ||
           ((code >= 0x115f) && (code <= 0x11a2)) ||
           ((code >= 0x11a8) && (code <= 0x11f9)) ||
           ((code >= 0x1200) && (code <= 0x1206)) ||
           ((code >= 0x1208) && (code <= 0x1246)) ||
           (code == 0x1248) ||
           ((code >= 0x124a) && (code <= 0x124d)) ||
           ((code >= 0x1250) && (code <= 0x1256)) ||
           (code == 0x1258) ||
           ((code >= 0x125a) && (code <= 0x125d)) ||
           ((code >= 0x1260) && (code <= 0x1286)) ||
           (code == 0x1288) ||
           ((code >= 0x128a) && (code <= 0x128d)) ||
           ((code >= 0x1290) && (code <= 0x12ae)) ||
           (code == 0x12b0) ||
           ((code >= 0x12b2) && (code <= 0x12b5)) ||
           ((code >= 0x12b8) && (code <= 0x12be)) ||
           (code == 0x12c0) ||
           ((code >= 0x12c2) && (code <= 0x12c5)) ||
           ((code >= 0x12c8) && (code <= 0x12ce)) ||
           ((code >= 0x12d0) && (code <= 0x12d6)) ||
           ((code >= 0x12d8) && (code <= 0x12ee)) ||
           ((code >= 0x12f0) && (code <= 0x130e)) ||
           (code == 0x1310) ||
           ((code >= 0x1312) && (code <= 0x1315)) ||
           ((code >= 0x1318) && (code <= 0x131e)) ||
           ((code >= 0x1320) && (code <= 0x1346)) ||
           ((code >= 0x1348) && (code <= 0x135a)) ||
           ((code >= 0x13a0) && (code <= 0x13f4)) ||
           ((code >= 0x1401) && (code <= 0x166c)) ||
           ((code >= 0x166f) && (code <= 0x1676)) ||
           ((code >= 0x1681) && (code <= 0x169a)) ||
           ((code >= 0x16a0) && (code <= 0x16ea)) ||
           ((code >= 0x1780) && (code <= 0x17b3)) ||
           ((code >= 0x1820) && (code <= 0x1877)) ||
           ((code >= 0x1880) && (code <= 0x18a8)) ||
           ((code >= 0x1e00) && (code <= 0x1e9b)) ||
           ((code >= 0x1ea0) && (code <= 0x1ef9)) ||
           ((code >= 0x1f00) && (code <= 0x1f15)) ||
           ((code >= 0x1f18) && (code <= 0x1f1d)) ||
           ((code >= 0x1f20) && (code <= 0x1f45)) ||
           ((code >= 0x1f48) && (code <= 0x1f4d)) ||
           ((code >= 0x1f50) && (code <= 0x1f57)) ||
           (code == 0x1f59) ||
           (code == 0x1f5b) ||
           (code == 0x1f5d) ||
           ((code >= 0x1f5f) && (code <= 0x1f7d)) ||
           ((code >= 0x1f80) && (code <= 0x1fb4)) ||
           ((code >= 0x1fb6) && (code <= 0x1fbc)) ||
           (code == 0x1fbe) ||
           ((code >= 0x1fc2) && (code <= 0x1fc4)) ||
           ((code >= 0x1fc6) && (code <= 0x1fcc)) ||
           ((code >= 0x1fd0) && (code <= 0x1fd3)) ||
           ((code >= 0x1fd6) && (code <= 0x1fdb)) ||
           ((code >= 0x1fe0) && (code <= 0x1fec)) ||
           ((code >= 0x1ff2) && (code <= 0x1ff4)) ||
           ((code >= 0x1ff6) && (code <= 0x1ffc)) ||
           (code == 0x207f) ||
           (code == 0x2102) ||
           (code == 0x2107) ||
           ((code >= 0x210a) && (code <= 0x2113)) ||
           (code == 0x2115) ||
           ((code >= 0x2119) && (code <= 0x211d)) ||
           (code == 0x2124) ||
           (code == 0x2126) ||
           (code == 0x2128) ||
           ((code >= 0x212a) && (code <= 0x212d)) ||
           ((code >= 0x212f) && (code <= 0x2131)) ||
           ((code >= 0x2133) && (code <= 0x2139)) ||
           ((code >= 0x3005) && (code <= 0x3006)) ||
           ((code >= 0x3031) && (code <= 0x3035)) ||
           ((code >= 0x3041) && (code <= 0x3094)) ||
           ((code >= 0x309d) && (code <= 0x309e)) ||
           ((code >= 0x30a1) && (code <= 0x30fa)) ||
           ((code >= 0x30fc) && (code <= 0x30fe)) ||
           ((code >= 0x3105) && (code <= 0x312c)) ||
           ((code >= 0x3131) && (code <= 0x318e)) ||
           ((code >= 0x31a0) && (code <= 0x31b7)) ||
           (code == 0x3400) ||
           (code == 0x4db5) ||
           (code == 0x4e00) ||
           (code == 0x9fa5) ||
           ((code >= 0xa000) && (code <= 0xa48c)) ||
           (code == 0xac00) ||
           (code == 0xd7a3) ||
           ((code >= 0xf900) && (code <= 0xfa2d)) ||
           ((code >= 0xfb00) && (code <= 0xfb06)) ||
           ((code >= 0xfb13) && (code <= 0xfb17)) ||
           (code == 0xfb1d) ||
           ((code >= 0xfb1f) && (code <= 0xfb28)) ||
           ((code >= 0xfb2a) && (code <= 0xfb36)) ||
           ((code >= 0xfb38) && (code <= 0xfb3c)) ||
           (code == 0xfb3e) ||
           ((code >= 0xfb40) && (code <= 0xfb41)) ||
           ((code >= 0xfb43) && (code <= 0xfb44)) ||
           ((code >= 0xfb46) && (code <= 0xfbb1)) ||
           ((code >= 0xfbd3) && (code <= 0xfd3d)) ||
           ((code >= 0xfd50) && (code <= 0xfd8f)) ||
           ((code >= 0xfd92) && (code <= 0xfdc7)) ||
           ((code >= 0xfdf0) && (code <= 0xfdfb)) ||
           ((code >= 0xfe70) && (code <= 0xfe72)) ||
           (code == 0xfe74) ||
           ((code >= 0xfe76) && (code <= 0xfefc)) ||
           ((code >= 0xff21) && (code <= 0xff3a)) ||
           ((code >= 0xff41) && (code <= 0xff5a)) ||
           ((code >= 0xff66) && (code <= 0xffbe)) ||
           ((code >= 0xffc2) && (code <= 0xffc7)) ||
           ((code >= 0xffca) && (code <= 0xffcf)) ||
           ((code >= 0xffd2) && (code <= 0xffd7)) ||
           ((code >= 0xffda) && (code <= 0xffdc)) ||
           ((code >= 0x10300) && (code <= 0x1031e)) ||
           ((code >= 0x10330) && (code <= 0x10349)) ||
           ((code >= 0x10400) && (code <= 0x10425)) ||
           ((code >= 0x10428) && (code <= 0x1044d)) ||
           ((code >= 0x1d400) && (code <= 0x1d454)) ||
           ((code >= 0x1d456) && (code <= 0x1d49c)) ||
           ((code >= 0x1d49e) && (code <= 0x1d49f)) ||
           (code == 0x1d4a2) ||
           ((code >= 0x1d4a5) && (code <= 0x1d4a6)) ||
           ((code >= 0x1d4a9) && (code <= 0x1d4ac)) ||
           ((code >= 0x1d4ae) && (code <= 0x1d4b9)) ||
           (code == 0x1d4bb) ||
           ((code >= 0x1d4bd) && (code <= 0x1d4c0)) ||
           ((code >= 0x1d4c2) && (code <= 0x1d4c3)) ||
           ((code >= 0x1d4c5) && (code <= 0x1d505)) ||
           ((code >= 0x1d507) && (code <= 0x1d50a)) ||
           ((code >= 0x1d50d) && (code <= 0x1d514)) ||
           ((code >= 0x1d516) && (code <= 0x1d51c)) ||
           ((code >= 0x1d51e) && (code <= 0x1d539)) ||
           ((code >= 0x1d53b) && (code <= 0x1d53e)) ||
           ((code >= 0x1d540) && (code <= 0x1d544)) ||
           (code == 0x1d546) ||
           ((code >= 0x1d54a) && (code <= 0x1d550)) ||
           ((code >= 0x1d552) && (code <= 0x1d6a3)) ||
           ((code >= 0x1d6a8) && (code <= 0x1d6c0)) ||
           ((code >= 0x1d6c2) && (code <= 0x1d6da)) ||
           ((code >= 0x1d6dc) && (code <= 0x1d6fa)) ||
           ((code >= 0x1d6fc) && (code <= 0x1d714)) ||
           ((code >= 0x1d716) && (code <= 0x1d734)) ||
           ((code >= 0x1d736) && (code <= 0x1d74e)) ||
           ((code >= 0x1d750) && (code <= 0x1d76e)) ||
           ((code >= 0x1d770) && (code <= 0x1d788)) ||
           ((code >= 0x1d78a) && (code <= 0x1d7a8)) ||
           ((code >= 0x1d7aa) && (code <= 0x1d7c2)) ||
           ((code >= 0x1d7c4) && (code <= 0x1d7c9)) ||
           (code == 0x20000) ||
           (code == 0x2a6d6) ||
           ((code >= 0x2f800) && (code <= 0x2fa1d)));
}

/**
 * xmlUCSIsCatLl:
 * @code: UCS code point
 *
 * Check whether the character is part of Ll UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatLl(int code) {
    return(((code >= 0x61) && (code <= 0x7a)) ||
           (code == 0xaa) ||
           (code == 0xb5) ||
           (code == 0xba) ||
           ((code >= 0xdf) && (code <= 0xf6)) ||
           ((code >= 0xf8) && (code <= 0xff)) ||
           (code == 0x101) ||
           (code == 0x103) ||
           (code == 0x105) ||
           (code == 0x107) ||
           (code == 0x109) ||
           (code == 0x10b) ||
           (code == 0x10d) ||
           (code == 0x10f) ||
           (code == 0x111) ||
           (code == 0x113) ||
           (code == 0x115) ||
           (code == 0x117) ||
           (code == 0x119) ||
           (code == 0x11b) ||
           (code == 0x11d) ||
           (code == 0x11f) ||
           (code == 0x121) ||
           (code == 0x123) ||
           (code == 0x125) ||
           (code == 0x127) ||
           (code == 0x129) ||
           (code == 0x12b) ||
           (code == 0x12d) ||
           (code == 0x12f) ||
           (code == 0x131) ||
           (code == 0x133) ||
           (code == 0x135) ||
           ((code >= 0x137) && (code <= 0x138)) ||
           (code == 0x13a) ||
           (code == 0x13c) ||
           (code == 0x13e) ||
           (code == 0x140) ||
           (code == 0x142) ||
           (code == 0x144) ||
           (code == 0x146) ||
           ((code >= 0x148) && (code <= 0x149)) ||
           (code == 0x14b) ||
           (code == 0x14d) ||
           (code == 0x14f) ||
           (code == 0x151) ||
           (code == 0x153) ||
           (code == 0x155) ||
           (code == 0x157) ||
           (code == 0x159) ||
           (code == 0x15b) ||
           (code == 0x15d) ||
           (code == 0x15f) ||
           (code == 0x161) ||
           (code == 0x163) ||
           (code == 0x165) ||
           (code == 0x167) ||
           (code == 0x169) ||
           (code == 0x16b) ||
           (code == 0x16d) ||
           (code == 0x16f) ||
           (code == 0x171) ||
           (code == 0x173) ||
           (code == 0x175) ||
           (code == 0x177) ||
           (code == 0x17a) ||
           (code == 0x17c) ||
           ((code >= 0x17e) && (code <= 0x180)) ||
           (code == 0x183) ||
           (code == 0x185) ||
           (code == 0x188) ||
           ((code >= 0x18c) && (code <= 0x18d)) ||
           (code == 0x192) ||
           (code == 0x195) ||
           ((code >= 0x199) && (code <= 0x19b)) ||
           (code == 0x19e) ||
           (code == 0x1a1) ||
           (code == 0x1a3) ||
           (code == 0x1a5) ||
           (code == 0x1a8) ||
           ((code >= 0x1aa) && (code <= 0x1ab)) ||
           (code == 0x1ad) ||
           (code == 0x1b0) ||
           (code == 0x1b4) ||
           (code == 0x1b6) ||
           ((code >= 0x1b9) && (code <= 0x1ba)) ||
           ((code >= 0x1bd) && (code <= 0x1bf)) ||
           (code == 0x1c6) ||
           (code == 0x1c9) ||
           (code == 0x1cc) ||
           (code == 0x1ce) ||
           (code == 0x1d0) ||
           (code == 0x1d2) ||
           (code == 0x1d4) ||
           (code == 0x1d6) ||
           (code == 0x1d8) ||
           (code == 0x1da) ||
           ((code >= 0x1dc) && (code <= 0x1dd)) ||
           (code == 0x1df) ||
           (code == 0x1e1) ||
           (code == 0x1e3) ||
           (code == 0x1e5) ||
           (code == 0x1e7) ||
           (code == 0x1e9) ||
           (code == 0x1eb) ||
           (code == 0x1ed) ||
           ((code >= 0x1ef) && (code <= 0x1f0)) ||
           (code == 0x1f3) ||
           (code == 0x1f5) ||
           (code == 0x1f9) ||
           (code == 0x1fb) ||
           (code == 0x1fd) ||
           (code == 0x1ff) ||
           (code == 0x201) ||
           (code == 0x203) ||
           (code == 0x205) ||
           (code == 0x207) ||
           (code == 0x209) ||
           (code == 0x20b) ||
           (code == 0x20d) ||
           (code == 0x20f) ||
           (code == 0x211) ||
           (code == 0x213) ||
           (code == 0x215) ||
           (code == 0x217) ||
           (code == 0x219) ||
           (code == 0x21b) ||
           (code == 0x21d) ||
           (code == 0x21f) ||
           (code == 0x223) ||
           (code == 0x225) ||
           (code == 0x227) ||
           (code == 0x229) ||
           (code == 0x22b) ||
           (code == 0x22d) ||
           (code == 0x22f) ||
           (code == 0x231) ||
           (code == 0x233) ||
           ((code >= 0x250) && (code <= 0x2ad)) ||
           (code == 0x390) ||
           ((code >= 0x3ac) && (code <= 0x3ce)) ||
           ((code >= 0x3d0) && (code <= 0x3d1)) ||
           ((code >= 0x3d5) && (code <= 0x3d7)) ||
           (code == 0x3db) ||
           (code == 0x3dd) ||
           (code == 0x3df) ||
           (code == 0x3e1) ||
           (code == 0x3e3) ||
           (code == 0x3e5) ||
           (code == 0x3e7) ||
           (code == 0x3e9) ||
           (code == 0x3eb) ||
           (code == 0x3ed) ||
           ((code >= 0x3ef) && (code <= 0x3f3)) ||
           (code == 0x3f5) ||
           ((code >= 0x430) && (code <= 0x45f)) ||
           (code == 0x461) ||
           (code == 0x463) ||
           (code == 0x465) ||
           (code == 0x467) ||
           (code == 0x469) ||
           (code == 0x46b) ||
           (code == 0x46d) ||
           (code == 0x46f) ||
           (code == 0x471) ||
           (code == 0x473) ||
           (code == 0x475) ||
           (code == 0x477) ||
           (code == 0x479) ||
           (code == 0x47b) ||
           (code == 0x47d) ||
           (code == 0x47f) ||
           (code == 0x481) ||
           (code == 0x48d) ||
           (code == 0x48f) ||
           (code == 0x491) ||
           (code == 0x493) ||
           (code == 0x495) ||
           (code == 0x497) ||
           (code == 0x499) ||
           (code == 0x49b) ||
           (code == 0x49d) ||
           (code == 0x49f) ||
           (code == 0x4a1) ||
           (code == 0x4a3) ||
           (code == 0x4a5) ||
           (code == 0x4a7) ||
           (code == 0x4a9) ||
           (code == 0x4ab) ||
           (code == 0x4ad) ||
           (code == 0x4af) ||
           (code == 0x4b1) ||
           (code == 0x4b3) ||
           (code == 0x4b5) ||
           (code == 0x4b7) ||
           (code == 0x4b9) ||
           (code == 0x4bb) ||
           (code == 0x4bd) ||
           (code == 0x4bf) ||
           (code == 0x4c2) ||
           (code == 0x4c4) ||
           (code == 0x4c8) ||
           (code == 0x4cc) ||
           (code == 0x4d1) ||
           (code == 0x4d3) ||
           (code == 0x4d5) ||
           (code == 0x4d7) ||
           (code == 0x4d9) ||
           (code == 0x4db) ||
           (code == 0x4dd) ||
           (code == 0x4df) ||
           (code == 0x4e1) ||
           (code == 0x4e3) ||
           (code == 0x4e5) ||
           (code == 0x4e7) ||
           (code == 0x4e9) ||
           (code == 0x4eb) ||
           (code == 0x4ed) ||
           (code == 0x4ef) ||
           (code == 0x4f1) ||
           (code == 0x4f3) ||
           (code == 0x4f5) ||
           (code == 0x4f9) ||
           ((code >= 0x561) && (code <= 0x587)) ||
           (code == 0x1e01) ||
           (code == 0x1e03) ||
           (code == 0x1e05) ||
           (code == 0x1e07) ||
           (code == 0x1e09) ||
           (code == 0x1e0b) ||
           (code == 0x1e0d) ||
           (code == 0x1e0f) ||
           (code == 0x1e11) ||
           (code == 0x1e13) ||
           (code == 0x1e15) ||
           (code == 0x1e17) ||
           (code == 0x1e19) ||
           (code == 0x1e1b) ||
           (code == 0x1e1d) ||
           (code == 0x1e1f) ||
           (code == 0x1e21) ||
           (code == 0x1e23) ||
           (code == 0x1e25) ||
           (code == 0x1e27) ||
           (code == 0x1e29) ||
           (code == 0x1e2b) ||
           (code == 0x1e2d) ||
           (code == 0x1e2f) ||
           (code == 0x1e31) ||
           (code == 0x1e33) ||
           (code == 0x1e35) ||
           (code == 0x1e37) ||
           (code == 0x1e39) ||
           (code == 0x1e3b) ||
           (code == 0x1e3d) ||
           (code == 0x1e3f) ||
           (code == 0x1e41) ||
           (code == 0x1e43) ||
           (code == 0x1e45) ||
           (code == 0x1e47) ||
           (code == 0x1e49) ||
           (code == 0x1e4b) ||
           (code == 0x1e4d) ||
           (code == 0x1e4f) ||
           (code == 0x1e51) ||
           (code == 0x1e53) ||
           (code == 0x1e55) ||
           (code == 0x1e57) ||
           (code == 0x1e59) ||
           (code == 0x1e5b) ||
           (code == 0x1e5d) ||
           (code == 0x1e5f) ||
           (code == 0x1e61) ||
           (code == 0x1e63) ||
           (code == 0x1e65) ||
           (code == 0x1e67) ||
           (code == 0x1e69) ||
           (code == 0x1e6b) ||
           (code == 0x1e6d) ||
           (code == 0x1e6f) ||
           (code == 0x1e71) ||
           (code == 0x1e73) ||
           (code == 0x1e75) ||
           (code == 0x1e77) ||
           (code == 0x1e79) ||
           (code == 0x1e7b) ||
           (code == 0x1e7d) ||
           (code == 0x1e7f) ||
           (code == 0x1e81) ||
           (code == 0x1e83) ||
           (code == 0x1e85) ||
           (code == 0x1e87) ||
           (code == 0x1e89) ||
           (code == 0x1e8b) ||
           (code == 0x1e8d) ||
           (code == 0x1e8f) ||
           (code == 0x1e91) ||
           (code == 0x1e93) ||
           ((code >= 0x1e95) && (code <= 0x1e9b)) ||
           (code == 0x1ea1) ||
           (code == 0x1ea3) ||
           (code == 0x1ea5) ||
           (code == 0x1ea7) ||
           (code == 0x1ea9) ||
           (code == 0x1eab) ||
           (code == 0x1ead) ||
           (code == 0x1eaf) ||
           (code == 0x1eb1) ||
           (code == 0x1eb3) ||
           (code == 0x1eb5) ||
           (code == 0x1eb7) ||
           (code == 0x1eb9) ||
           (code == 0x1ebb) ||
           (code == 0x1ebd) ||
           (code == 0x1ebf) ||
           (code == 0x1ec1) ||
           (code == 0x1ec3) ||
           (code == 0x1ec5) ||
           (code == 0x1ec7) ||
           (code == 0x1ec9) ||
           (code == 0x1ecb) ||
           (code == 0x1ecd) ||
           (code == 0x1ecf) ||
           (code == 0x1ed1) ||
           (code == 0x1ed3) ||
           (code == 0x1ed5) ||
           (code == 0x1ed7) ||
           (code == 0x1ed9) ||
           (code == 0x1edb) ||
           (code == 0x1edd) ||
           (code == 0x1edf) ||
           (code == 0x1ee1) ||
           (code == 0x1ee3) ||
           (code == 0x1ee5) ||
           (code == 0x1ee7) ||
           (code == 0x1ee9) ||
           (code == 0x1eeb) ||
           (code == 0x1eed) ||
           (code == 0x1eef) ||
           (code == 0x1ef1) ||
           (code == 0x1ef3) ||
           (code == 0x1ef5) ||
           (code == 0x1ef7) ||
           (code == 0x1ef9) ||
           ((code >= 0x1f00) && (code <= 0x1f07)) ||
           ((code >= 0x1f10) && (code <= 0x1f15)) ||
           ((code >= 0x1f20) && (code <= 0x1f27)) ||
           ((code >= 0x1f30) && (code <= 0x1f37)) ||
           ((code >= 0x1f40) && (code <= 0x1f45)) ||
           ((code >= 0x1f50) && (code <= 0x1f57)) ||
           ((code >= 0x1f60) && (code <= 0x1f67)) ||
           ((code >= 0x1f70) && (code <= 0x1f7d)) ||
           ((code >= 0x1f80) && (code <= 0x1f87)) ||
           ((code >= 0x1f90) && (code <= 0x1f97)) ||
           ((code >= 0x1fa0) && (code <= 0x1fa7)) ||
           ((code >= 0x1fb0) && (code <= 0x1fb4)) ||
           ((code >= 0x1fb6) && (code <= 0x1fb7)) ||
           (code == 0x1fbe) ||
           ((code >= 0x1fc2) && (code <= 0x1fc4)) ||
           ((code >= 0x1fc6) && (code <= 0x1fc7)) ||
           ((code >= 0x1fd0) && (code <= 0x1fd3)) ||
           ((code >= 0x1fd6) && (code <= 0x1fd7)) ||
           ((code >= 0x1fe0) && (code <= 0x1fe7)) ||
           ((code >= 0x1ff2) && (code <= 0x1ff4)) ||
           ((code >= 0x1ff6) && (code <= 0x1ff7)) ||
           (code == 0x207f) ||
           (code == 0x210a) ||
           ((code >= 0x210e) && (code <= 0x210f)) ||
           (code == 0x2113) ||
           (code == 0x212f) ||
           (code == 0x2134) ||
           (code == 0x2139) ||
           ((code >= 0xfb00) && (code <= 0xfb06)) ||
           ((code >= 0xfb13) && (code <= 0xfb17)) ||
           ((code >= 0xff41) && (code <= 0xff5a)) ||
           ((code >= 0x10428) && (code <= 0x1044d)) ||
           ((code >= 0x1d41a) && (code <= 0x1d433)) ||
           ((code >= 0x1d44e) && (code <= 0x1d454)) ||
           ((code >= 0x1d456) && (code <= 0x1d467)) ||
           ((code >= 0x1d482) && (code <= 0x1d49b)) ||
           ((code >= 0x1d4b6) && (code <= 0x1d4b9)) ||
           (code == 0x1d4bb) ||
           ((code >= 0x1d4bd) && (code <= 0x1d4c0)) ||
           ((code >= 0x1d4c2) && (code <= 0x1d4c3)) ||
           ((code >= 0x1d4c5) && (code <= 0x1d4cf)) ||
           ((code >= 0x1d4ea) && (code <= 0x1d503)) ||
           ((code >= 0x1d51e) && (code <= 0x1d537)) ||
           ((code >= 0x1d552) && (code <= 0x1d56b)) ||
           ((code >= 0x1d586) && (code <= 0x1d59f)) ||
           ((code >= 0x1d5ba) && (code <= 0x1d5d3)) ||
           ((code >= 0x1d5ee) && (code <= 0x1d607)) ||
           ((code >= 0x1d622) && (code <= 0x1d63b)) ||
           ((code >= 0x1d656) && (code <= 0x1d66f)) ||
           ((code >= 0x1d68a) && (code <= 0x1d6a3)) ||
           ((code >= 0x1d6c2) && (code <= 0x1d6da)) ||
           ((code >= 0x1d6dc) && (code <= 0x1d6e1)) ||
           ((code >= 0x1d6fc) && (code <= 0x1d714)) ||
           ((code >= 0x1d716) && (code <= 0x1d71b)) ||
           ((code >= 0x1d736) && (code <= 0x1d74e)) ||
           ((code >= 0x1d750) && (code <= 0x1d755)) ||
           ((code >= 0x1d770) && (code <= 0x1d788)) ||
           ((code >= 0x1d78a) && (code <= 0x1d78f)) ||
           ((code >= 0x1d7aa) && (code <= 0x1d7c2)) ||
           ((code >= 0x1d7c4) && (code <= 0x1d7c9)));
}

/**
 * xmlUCSIsCatLm:
 * @code: UCS code point
 *
 * Check whether the character is part of Lm UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatLm(int code) {
    return(((code >= 0x2b0) && (code <= 0x2b8)) ||
           ((code >= 0x2bb) && (code <= 0x2c1)) ||
           ((code >= 0x2d0) && (code <= 0x2d1)) ||
           ((code >= 0x2e0) && (code <= 0x2e4)) ||
           (code == 0x2ee) ||
           (code == 0x37a) ||
           (code == 0x559) ||
           (code == 0x640) ||
           ((code >= 0x6e5) && (code <= 0x6e6)) ||
           (code == 0xe46) ||
           (code == 0xec6) ||
           (code == 0x1843) ||
           (code == 0x3005) ||
           ((code >= 0x3031) && (code <= 0x3035)) ||
           ((code >= 0x309d) && (code <= 0x309e)) ||
           ((code >= 0x30fc) && (code <= 0x30fe)) ||
           (code == 0xff70) ||
           ((code >= 0xff9e) && (code <= 0xff9f)));
}

/**
 * xmlUCSIsCatLo:
 * @code: UCS code point
 *
 * Check whether the character is part of Lo UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatLo(int code) {
    return((code == 0x1bb) ||
           ((code >= 0x1c0) && (code <= 0x1c3)) ||
           ((code >= 0x5d0) && (code <= 0x5ea)) ||
           ((code >= 0x5f0) && (code <= 0x5f2)) ||
           ((code >= 0x621) && (code <= 0x63a)) ||
           ((code >= 0x641) && (code <= 0x64a)) ||
           ((code >= 0x671) && (code <= 0x6d3)) ||
           (code == 0x6d5) ||
           ((code >= 0x6fa) && (code <= 0x6fc)) ||
           (code == 0x710) ||
           ((code >= 0x712) && (code <= 0x72c)) ||
           ((code >= 0x780) && (code <= 0x7a5)) ||
           ((code >= 0x905) && (code <= 0x939)) ||
           (code == 0x93d) ||
           (code == 0x950) ||
           ((code >= 0x958) && (code <= 0x961)) ||
           ((code >= 0x985) && (code <= 0x98c)) ||
           ((code >= 0x98f) && (code <= 0x990)) ||
           ((code >= 0x993) && (code <= 0x9a8)) ||
           ((code >= 0x9aa) && (code <= 0x9b0)) ||
           (code == 0x9b2) ||
           ((code >= 0x9b6) && (code <= 0x9b9)) ||
           ((code >= 0x9dc) && (code <= 0x9dd)) ||
           ((code >= 0x9df) && (code <= 0x9e1)) ||
           ((code >= 0x9f0) && (code <= 0x9f1)) ||
           ((code >= 0xa05) && (code <= 0xa0a)) ||
           ((code >= 0xa0f) && (code <= 0xa10)) ||
           ((code >= 0xa13) && (code <= 0xa28)) ||
           ((code >= 0xa2a) && (code <= 0xa30)) ||
           ((code >= 0xa32) && (code <= 0xa33)) ||
           ((code >= 0xa35) && (code <= 0xa36)) ||
           ((code >= 0xa38) && (code <= 0xa39)) ||
           ((code >= 0xa59) && (code <= 0xa5c)) ||
           (code == 0xa5e) ||
           ((code >= 0xa72) && (code <= 0xa74)) ||
           ((code >= 0xa85) && (code <= 0xa8b)) ||
           (code == 0xa8d) ||
           ((code >= 0xa8f) && (code <= 0xa91)) ||
           ((code >= 0xa93) && (code <= 0xaa8)) ||
           ((code >= 0xaaa) && (code <= 0xab0)) ||
           ((code >= 0xab2) && (code <= 0xab3)) ||
           ((code >= 0xab5) && (code <= 0xab9)) ||
           (code == 0xabd) ||
           (code == 0xad0) ||
           (code == 0xae0) ||
           ((code >= 0xb05) && (code <= 0xb0c)) ||
           ((code >= 0xb0f) && (code <= 0xb10)) ||
           ((code >= 0xb13) && (code <= 0xb28)) ||
           ((code >= 0xb2a) && (code <= 0xb30)) ||
           ((code >= 0xb32) && (code <= 0xb33)) ||
           ((code >= 0xb36) && (code <= 0xb39)) ||
           (code == 0xb3d) ||
           ((code >= 0xb5c) && (code <= 0xb5d)) ||
           ((code >= 0xb5f) && (code <= 0xb61)) ||
           ((code >= 0xb85) && (code <= 0xb8a)) ||
           ((code >= 0xb8e) && (code <= 0xb90)) ||
           ((code >= 0xb92) && (code <= 0xb95)) ||
           ((code >= 0xb99) && (code <= 0xb9a)) ||
           (code == 0xb9c) ||
           ((code >= 0xb9e) && (code <= 0xb9f)) ||
           ((code >= 0xba3) && (code <= 0xba4)) ||
           ((code >= 0xba8) && (code <= 0xbaa)) ||
           ((code >= 0xbae) && (code <= 0xbb5)) ||
           ((code >= 0xbb7) && (code <= 0xbb9)) ||
           ((code >= 0xc05) && (code <= 0xc0c)) ||
           ((code >= 0xc0e) && (code <= 0xc10)) ||
           ((code >= 0xc12) && (code <= 0xc28)) ||
           ((code >= 0xc2a) && (code <= 0xc33)) ||
           ((code >= 0xc35) && (code <= 0xc39)) ||
           ((code >= 0xc60) && (code <= 0xc61)) ||
           ((code >= 0xc85) && (code <= 0xc8c)) ||
           ((code >= 0xc8e) && (code <= 0xc90)) ||
           ((code >= 0xc92) && (code <= 0xca8)) ||
           ((code >= 0xcaa) && (code <= 0xcb3)) ||
           ((code >= 0xcb5) && (code <= 0xcb9)) ||
           (code == 0xcde) ||
           ((code >= 0xce0) && (code <= 0xce1)) ||
           ((code >= 0xd05) && (code <= 0xd0c)) ||
           ((code >= 0xd0e) && (code <= 0xd10)) ||
           ((code >= 0xd12) && (code <= 0xd28)) ||
           ((code >= 0xd2a) && (code <= 0xd39)) ||
           ((code >= 0xd60) && (code <= 0xd61)) ||
           ((code >= 0xd85) && (code <= 0xd96)) ||
           ((code >= 0xd9a) && (code <= 0xdb1)) ||
           ((code >= 0xdb3) && (code <= 0xdbb)) ||
           (code == 0xdbd) ||
           ((code >= 0xdc0) && (code <= 0xdc6)) ||
           ((code >= 0xe01) && (code <= 0xe30)) ||
           ((code >= 0xe32) && (code <= 0xe33)) ||
           ((code >= 0xe40) && (code <= 0xe45)) ||
           ((code >= 0xe81) && (code <= 0xe82)) ||
           (code == 0xe84) ||
           ((code >= 0xe87) && (code <= 0xe88)) ||
           (code == 0xe8a) ||
           (code == 0xe8d) ||
           ((code >= 0xe94) && (code <= 0xe97)) ||
           ((code >= 0xe99) && (code <= 0xe9f)) ||
           ((code >= 0xea1) && (code <= 0xea3)) ||
           (code == 0xea5) ||
           (code == 0xea7) ||
           ((code >= 0xeaa) && (code <= 0xeab)) ||
           ((code >= 0xead) && (code <= 0xeb0)) ||
           ((code >= 0xeb2) && (code <= 0xeb3)) ||
           (code == 0xebd) ||
           ((code >= 0xec0) && (code <= 0xec4)) ||
           ((code >= 0xedc) && (code <= 0xedd)) ||
           (code == 0xf00) ||
           ((code >= 0xf40) && (code <= 0xf47)) ||
           ((code >= 0xf49) && (code <= 0xf6a)) ||
           ((code >= 0xf88) && (code <= 0xf8b)) ||
           ((code >= 0x1000) && (code <= 0x1021)) ||
           ((code >= 0x1023) && (code <= 0x1027)) ||
           ((code >= 0x1029) && (code <= 0x102a)) ||
           ((code >= 0x1050) && (code <= 0x1055)) ||
           ((code >= 0x10d0) && (code <= 0x10f6)) ||
           ((code >= 0x1100) && (code <= 0x1159)) ||
           ((code >= 0x115f) && (code <= 0x11a2)) ||
           ((code >= 0x11a8) && (code <= 0x11f9)) ||
           ((code >= 0x1200) && (code <= 0x1206)) ||
           ((code >= 0x1208) && (code <= 0x1246)) ||
           (code == 0x1248) ||
           ((code >= 0x124a) && (code <= 0x124d)) ||
           ((code >= 0x1250) && (code <= 0x1256)) ||
           (code == 0x1258) ||
           ((code >= 0x125a) && (code <= 0x125d)) ||
           ((code >= 0x1260) && (code <= 0x1286)) ||
           (code == 0x1288) ||
           ((code >= 0x128a) && (code <= 0x128d)) ||
           ((code >= 0x1290) && (code <= 0x12ae)) ||
           (code == 0x12b0) ||
           ((code >= 0x12b2) && (code <= 0x12b5)) ||
           ((code >= 0x12b8) && (code <= 0x12be)) ||
           (code == 0x12c0) ||
           ((code >= 0x12c2) && (code <= 0x12c5)) ||
           ((code >= 0x12c8) && (code <= 0x12ce)) ||
           ((code >= 0x12d0) && (code <= 0x12d6)) ||
           ((code >= 0x12d8) && (code <= 0x12ee)) ||
           ((code >= 0x12f0) && (code <= 0x130e)) ||
           (code == 0x1310) ||
           ((code >= 0x1312) && (code <= 0x1315)) ||
           ((code >= 0x1318) && (code <= 0x131e)) ||
           ((code >= 0x1320) && (code <= 0x1346)) ||
           ((code >= 0x1348) && (code <= 0x135a)) ||
           ((code >= 0x13a0) && (code <= 0x13f4)) ||
           ((code >= 0x1401) && (code <= 0x166c)) ||
           ((code >= 0x166f) && (code <= 0x1676)) ||
           ((code >= 0x1681) && (code <= 0x169a)) ||
           ((code >= 0x16a0) && (code <= 0x16ea)) ||
           ((code >= 0x1780) && (code <= 0x17b3)) ||
           ((code >= 0x1820) && (code <= 0x1842)) ||
           ((code >= 0x1844) && (code <= 0x1877)) ||
           ((code >= 0x1880) && (code <= 0x18a8)) ||
           ((code >= 0x2135) && (code <= 0x2138)) ||
           (code == 0x3006) ||
           ((code >= 0x3041) && (code <= 0x3094)) ||
           ((code >= 0x30a1) && (code <= 0x30fa)) ||
           ((code >= 0x3105) && (code <= 0x312c)) ||
           ((code >= 0x3131) && (code <= 0x318e)) ||
           ((code >= 0x31a0) && (code <= 0x31b7)) ||
           (code == 0x3400) ||
           (code == 0x4db5) ||
           (code == 0x4e00) ||
           (code == 0x9fa5) ||
           ((code >= 0xa000) && (code <= 0xa48c)) ||
           (code == 0xac00) ||
           (code == 0xd7a3) ||
           ((code >= 0xf900) && (code <= 0xfa2d)) ||
           (code == 0xfb1d) ||
           ((code >= 0xfb1f) && (code <= 0xfb28)) ||
           ((code >= 0xfb2a) && (code <= 0xfb36)) ||
           ((code >= 0xfb38) && (code <= 0xfb3c)) ||
           (code == 0xfb3e) ||
           ((code >= 0xfb40) && (code <= 0xfb41)) ||
           ((code >= 0xfb43) && (code <= 0xfb44)) ||
           ((code >= 0xfb46) && (code <= 0xfbb1)) ||
           ((code >= 0xfbd3) && (code <= 0xfd3d)) ||
           ((code >= 0xfd50) && (code <= 0xfd8f)) ||
           ((code >= 0xfd92) && (code <= 0xfdc7)) ||
           ((code >= 0xfdf0) && (code <= 0xfdfb)) ||
           ((code >= 0xfe70) && (code <= 0xfe72)) ||
           (code == 0xfe74) ||
           ((code >= 0xfe76) && (code <= 0xfefc)) ||
           ((code >= 0xff66) && (code <= 0xff6f)) ||
           ((code >= 0xff71) && (code <= 0xff9d)) ||
           ((code >= 0xffa0) && (code <= 0xffbe)) ||
           ((code >= 0xffc2) && (code <= 0xffc7)) ||
           ((code >= 0xffca) && (code <= 0xffcf)) ||
           ((code >= 0xffd2) && (code <= 0xffd7)) ||
           ((code >= 0xffda) && (code <= 0xffdc)) ||
           ((code >= 0x10300) && (code <= 0x1031e)) ||
           ((code >= 0x10330) && (code <= 0x10349)) ||
           (code == 0x20000) ||
           (code == 0x2a6d6) ||
           ((code >= 0x2f800) && (code <= 0x2fa1d)));
}

/**
 * xmlUCSIsCatLt:
 * @code: UCS code point
 *
 * Check whether the character is part of Lt UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatLt(int code) {
    return((code == 0x1c5) ||
           (code == 0x1c8) ||
           (code == 0x1cb) ||
           (code == 0x1f2) ||
           ((code >= 0x1f88) && (code <= 0x1f8f)) ||
           ((code >= 0x1f98) && (code <= 0x1f9f)) ||
           ((code >= 0x1fa8) && (code <= 0x1faf)) ||
           (code == 0x1fbc) ||
           (code == 0x1fcc) ||
           (code == 0x1ffc));
}

/**
 * xmlUCSIsCatLu:
 * @code: UCS code point
 *
 * Check whether the character is part of Lu UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatLu(int code) {
    return(((code >= 0x41) && (code <= 0x5a)) ||
           ((code >= 0xc0) && (code <= 0xd6)) ||
           ((code >= 0xd8) && (code <= 0xde)) ||
           (code == 0x100) ||
           (code == 0x102) ||
           (code == 0x104) ||
           (code == 0x106) ||
           (code == 0x108) ||
           (code == 0x10a) ||
           (code == 0x10c) ||
           (code == 0x10e) ||
           (code == 0x110) ||
           (code == 0x112) ||
           (code == 0x114) ||
           (code == 0x116) ||
           (code == 0x118) ||
           (code == 0x11a) ||
           (code == 0x11c) ||
           (code == 0x11e) ||
           (code == 0x120) ||
           (code == 0x122) ||
           (code == 0x124) ||
           (code == 0x126) ||
           (code == 0x128) ||
           (code == 0x12a) ||
           (code == 0x12c) ||
           (code == 0x12e) ||
           (code == 0x130) ||
           (code == 0x132) ||
           (code == 0x134) ||
           (code == 0x136) ||
           (code == 0x139) ||
           (code == 0x13b) ||
           (code == 0x13d) ||
           (code == 0x13f) ||
           (code == 0x141) ||
           (code == 0x143) ||
           (code == 0x145) ||
           (code == 0x147) ||
           (code == 0x14a) ||
           (code == 0x14c) ||
           (code == 0x14e) ||
           (code == 0x150) ||
           (code == 0x152) ||
           (code == 0x154) ||
           (code == 0x156) ||
           (code == 0x158) ||
           (code == 0x15a) ||
           (code == 0x15c) ||
           (code == 0x15e) ||
           (code == 0x160) ||
           (code == 0x162) ||
           (code == 0x164) ||
           (code == 0x166) ||
           (code == 0x168) ||
           (code == 0x16a) ||
           (code == 0x16c) ||
           (code == 0x16e) ||
           (code == 0x170) ||
           (code == 0x172) ||
           (code == 0x174) ||
           (code == 0x176) ||
           ((code >= 0x178) && (code <= 0x179)) ||
           (code == 0x17b) ||
           (code == 0x17d) ||
           ((code >= 0x181) && (code <= 0x182)) ||
           (code == 0x184) ||
           ((code >= 0x186) && (code <= 0x187)) ||
           ((code >= 0x189) && (code <= 0x18b)) ||
           ((code >= 0x18e) && (code <= 0x191)) ||
           ((code >= 0x193) && (code <= 0x194)) ||
           ((code >= 0x196) && (code <= 0x198)) ||
           ((code >= 0x19c) && (code <= 0x19d)) ||
           ((code >= 0x19f) && (code <= 0x1a0)) ||
           (code == 0x1a2) ||
           (code == 0x1a4) ||
           ((code >= 0x1a6) && (code <= 0x1a7)) ||
           (code == 0x1a9) ||
           (code == 0x1ac) ||
           ((code >= 0x1ae) && (code <= 0x1af)) ||
           ((code >= 0x1b1) && (code <= 0x1b3)) ||
           (code == 0x1b5) ||
           ((code >= 0x1b7) && (code <= 0x1b8)) ||
           (code == 0x1bc) ||
           (code == 0x1c4) ||
           (code == 0x1c7) ||
           (code == 0x1ca) ||
           (code == 0x1cd) ||
           (code == 0x1cf) ||
           (code == 0x1d1) ||
           (code == 0x1d3) ||
           (code == 0x1d5) ||
           (code == 0x1d7) ||
           (code == 0x1d9) ||
           (code == 0x1db) ||
           (code == 0x1de) ||
           (code == 0x1e0) ||
           (code == 0x1e2) ||
           (code == 0x1e4) ||
           (code == 0x1e6) ||
           (code == 0x1e8) ||
           (code == 0x1ea) ||
           (code == 0x1ec) ||
           (code == 0x1ee) ||
           (code == 0x1f1) ||
           (code == 0x1f4) ||
           ((code >= 0x1f6) && (code <= 0x1f8)) ||
           (code == 0x1fa) ||
           (code == 0x1fc) ||
           (code == 0x1fe) ||
           (code == 0x200) ||
           (code == 0x202) ||
           (code == 0x204) ||
           (code == 0x206) ||
           (code == 0x208) ||
           (code == 0x20a) ||
           (code == 0x20c) ||
           (code == 0x20e) ||
           (code == 0x210) ||
           (code == 0x212) ||
           (code == 0x214) ||
           (code == 0x216) ||
           (code == 0x218) ||
           (code == 0x21a) ||
           (code == 0x21c) ||
           (code == 0x21e) ||
           (code == 0x222) ||
           (code == 0x224) ||
           (code == 0x226) ||
           (code == 0x228) ||
           (code == 0x22a) ||
           (code == 0x22c) ||
           (code == 0x22e) ||
           (code == 0x230) ||
           (code == 0x232) ||
           (code == 0x386) ||
           ((code >= 0x388) && (code <= 0x38a)) ||
           (code == 0x38c) ||
           ((code >= 0x38e) && (code <= 0x38f)) ||
           ((code >= 0x391) && (code <= 0x3a1)) ||
           ((code >= 0x3a3) && (code <= 0x3ab)) ||
           ((code >= 0x3d2) && (code <= 0x3d4)) ||
           (code == 0x3da) ||
           (code == 0x3dc) ||
           (code == 0x3de) ||
           (code == 0x3e0) ||
           (code == 0x3e2) ||
           (code == 0x3e4) ||
           (code == 0x3e6) ||
           (code == 0x3e8) ||
           (code == 0x3ea) ||
           (code == 0x3ec) ||
           (code == 0x3ee) ||
           (code == 0x3f4) ||
           ((code >= 0x400) && (code <= 0x42f)) ||
           (code == 0x460) ||
           (code == 0x462) ||
           (code == 0x464) ||
           (code == 0x466) ||
           (code == 0x468) ||
           (code == 0x46a) ||
           (code == 0x46c) ||
           (code == 0x46e) ||
           (code == 0x470) ||
           (code == 0x472) ||
           (code == 0x474) ||
           (code == 0x476) ||
           (code == 0x478) ||
           (code == 0x47a) ||
           (code == 0x47c) ||
           (code == 0x47e) ||
           (code == 0x480) ||
           (code == 0x48c) ||
           (code == 0x48e) ||
           (code == 0x490) ||
           (code == 0x492) ||
           (code == 0x494) ||
           (code == 0x496) ||
           (code == 0x498) ||
           (code == 0x49a) ||
           (code == 0x49c) ||
           (code == 0x49e) ||
           (code == 0x4a0) ||
           (code == 0x4a2) ||
           (code == 0x4a4) ||
           (code == 0x4a6) ||
           (code == 0x4a8) ||
           (code == 0x4aa) ||
           (code == 0x4ac) ||
           (code == 0x4ae) ||
           (code == 0x4b0) ||
           (code == 0x4b2) ||
           (code == 0x4b4) ||
           (code == 0x4b6) ||
           (code == 0x4b8) ||
           (code == 0x4ba) ||
           (code == 0x4bc) ||
           (code == 0x4be) ||
           ((code >= 0x4c0) && (code <= 0x4c1)) ||
           (code == 0x4c3) ||
           (code == 0x4c7) ||
           (code == 0x4cb) ||
           (code == 0x4d0) ||
           (code == 0x4d2) ||
           (code == 0x4d4) ||
           (code == 0x4d6) ||
           (code == 0x4d8) ||
           (code == 0x4da) ||
           (code == 0x4dc) ||
           (code == 0x4de) ||
           (code == 0x4e0) ||
           (code == 0x4e2) ||
           (code == 0x4e4) ||
           (code == 0x4e6) ||
           (code == 0x4e8) ||
           (code == 0x4ea) ||
           (code == 0x4ec) ||
           (code == 0x4ee) ||
           (code == 0x4f0) ||
           (code == 0x4f2) ||
           (code == 0x4f4) ||
           (code == 0x4f8) ||
           ((code >= 0x531) && (code <= 0x556)) ||
           ((code >= 0x10a0) && (code <= 0x10c5)) ||
           (code == 0x1e00) ||
           (code == 0x1e02) ||
           (code == 0x1e04) ||
           (code == 0x1e06) ||
           (code == 0x1e08) ||
           (code == 0x1e0a) ||
           (code == 0x1e0c) ||
           (code == 0x1e0e) ||
           (code == 0x1e10) ||
           (code == 0x1e12) ||
           (code == 0x1e14) ||
           (code == 0x1e16) ||
           (code == 0x1e18) ||
           (code == 0x1e1a) ||
           (code == 0x1e1c) ||
           (code == 0x1e1e) ||
           (code == 0x1e20) ||
           (code == 0x1e22) ||
           (code == 0x1e24) ||
           (code == 0x1e26) ||
           (code == 0x1e28) ||
           (code == 0x1e2a) ||
           (code == 0x1e2c) ||
           (code == 0x1e2e) ||
           (code == 0x1e30) ||
           (code == 0x1e32) ||
           (code == 0x1e34) ||
           (code == 0x1e36) ||
           (code == 0x1e38) ||
           (code == 0x1e3a) ||
           (code == 0x1e3c) ||
           (code == 0x1e3e) ||
           (code == 0x1e40) ||
           (code == 0x1e42) ||
           (code == 0x1e44) ||
           (code == 0x1e46) ||
           (code == 0x1e48) ||
           (code == 0x1e4a) ||
           (code == 0x1e4c) ||
           (code == 0x1e4e) ||
           (code == 0x1e50) ||
           (code == 0x1e52) ||
           (code == 0x1e54) ||
           (code == 0x1e56) ||
           (code == 0x1e58) ||
           (code == 0x1e5a) ||
           (code == 0x1e5c) ||
           (code == 0x1e5e) ||
           (code == 0x1e60) ||
           (code == 0x1e62) ||
           (code == 0x1e64) ||
           (code == 0x1e66) ||
           (code == 0x1e68) ||
           (code == 0x1e6a) ||
           (code == 0x1e6c) ||
           (code == 0x1e6e) ||
           (code == 0x1e70) ||
           (code == 0x1e72) ||
           (code == 0x1e74) ||
           (code == 0x1e76) ||
           (code == 0x1e78) ||
           (code == 0x1e7a) ||
           (code == 0x1e7c) ||
           (code == 0x1e7e) ||
           (code == 0x1e80) ||
           (code == 0x1e82) ||
           (code == 0x1e84) ||
           (code == 0x1e86) ||
           (code == 0x1e88) ||
           (code == 0x1e8a) ||
           (code == 0x1e8c) ||
           (code == 0x1e8e) ||
           (code == 0x1e90) ||
           (code == 0x1e92) ||
           (code == 0x1e94) ||
           (code == 0x1ea0) ||
           (code == 0x1ea2) ||
           (code == 0x1ea4) ||
           (code == 0x1ea6) ||
           (code == 0x1ea8) ||
           (code == 0x1eaa) ||
           (code == 0x1eac) ||
           (code == 0x1eae) ||
           (code == 0x1eb0) ||
           (code == 0x1eb2) ||
           (code == 0x1eb4) ||
           (code == 0x1eb6) ||
           (code == 0x1eb8) ||
           (code == 0x1eba) ||
           (code == 0x1ebc) ||
           (code == 0x1ebe) ||
           (code == 0x1ec0) ||
           (code == 0x1ec2) ||
           (code == 0x1ec4) ||
           (code == 0x1ec6) ||
           (code == 0x1ec8) ||
           (code == 0x1eca) ||
           (code == 0x1ecc) ||
           (code == 0x1ece) ||
           (code == 0x1ed0) ||
           (code == 0x1ed2) ||
           (code == 0x1ed4) ||
           (code == 0x1ed6) ||
           (code == 0x1ed8) ||
           (code == 0x1eda) ||
           (code == 0x1edc) ||
           (code == 0x1ede) ||
           (code == 0x1ee0) ||
           (code == 0x1ee2) ||
           (code == 0x1ee4) ||
           (code == 0x1ee6) ||
           (code == 0x1ee8) ||
           (code == 0x1eea) ||
           (code == 0x1eec) ||
           (code == 0x1eee) ||
           (code == 0x1ef0) ||
           (code == 0x1ef2) ||
           (code == 0x1ef4) ||
           (code == 0x1ef6) ||
           (code == 0x1ef8) ||
           ((code >= 0x1f08) && (code <= 0x1f0f)) ||
           ((code >= 0x1f18) && (code <= 0x1f1d)) ||
           ((code >= 0x1f28) && (code <= 0x1f2f)) ||
           ((code >= 0x1f38) && (code <= 0x1f3f)) ||
           ((code >= 0x1f48) && (code <= 0x1f4d)) ||
           (code == 0x1f59) ||
           (code == 0x1f5b) ||
           (code == 0x1f5d) ||
           (code == 0x1f5f) ||
           ((code >= 0x1f68) && (code <= 0x1f6f)) ||
           ((code >= 0x1fb8) && (code <= 0x1fbb)) ||
           ((code >= 0x1fc8) && (code <= 0x1fcb)) ||
           ((code >= 0x1fd8) && (code <= 0x1fdb)) ||
           ((code >= 0x1fe8) && (code <= 0x1fec)) ||
           ((code >= 0x1ff8) && (code <= 0x1ffb)) ||
           (code == 0x2102) ||
           (code == 0x2107) ||
           ((code >= 0x210b) && (code <= 0x210d)) ||
           ((code >= 0x2110) && (code <= 0x2112)) ||
           (code == 0x2115) ||
           ((code >= 0x2119) && (code <= 0x211d)) ||
           (code == 0x2124) ||
           (code == 0x2126) ||
           (code == 0x2128) ||
           ((code >= 0x212a) && (code <= 0x212d)) ||
           ((code >= 0x2130) && (code <= 0x2131)) ||
           (code == 0x2133) ||
           ((code >= 0xff21) && (code <= 0xff3a)) ||
           ((code >= 0x10400) && (code <= 0x10425)) ||
           ((code >= 0x1d400) && (code <= 0x1d419)) ||
           ((code >= 0x1d434) && (code <= 0x1d44d)) ||
           ((code >= 0x1d468) && (code <= 0x1d481)) ||
           (code == 0x1d49c) ||
           ((code >= 0x1d49e) && (code <= 0x1d49f)) ||
           (code == 0x1d4a2) ||
           ((code >= 0x1d4a5) && (code <= 0x1d4a6)) ||
           ((code >= 0x1d4a9) && (code <= 0x1d4ac)) ||
           ((code >= 0x1d4ae) && (code <= 0x1d4b5)) ||
           ((code >= 0x1d4d0) && (code <= 0x1d4e9)) ||
           ((code >= 0x1d504) && (code <= 0x1d505)) ||
           ((code >= 0x1d507) && (code <= 0x1d50a)) ||
           ((code >= 0x1d50d) && (code <= 0x1d514)) ||
           ((code >= 0x1d516) && (code <= 0x1d51c)) ||
           ((code >= 0x1d538) && (code <= 0x1d539)) ||
           ((code >= 0x1d53b) && (code <= 0x1d53e)) ||
           ((code >= 0x1d540) && (code <= 0x1d544)) ||
           (code == 0x1d546) ||
           ((code >= 0x1d54a) && (code <= 0x1d550)) ||
           ((code >= 0x1d56c) && (code <= 0x1d585)) ||
           ((code >= 0x1d5a0) && (code <= 0x1d5b9)) ||
           ((code >= 0x1d5d4) && (code <= 0x1d5ed)) ||
           ((code >= 0x1d608) && (code <= 0x1d621)) ||
           ((code >= 0x1d63c) && (code <= 0x1d655)) ||
           ((code >= 0x1d670) && (code <= 0x1d689)) ||
           ((code >= 0x1d6a8) && (code <= 0x1d6c0)) ||
           ((code >= 0x1d6e2) && (code <= 0x1d6fa)) ||
           ((code >= 0x1d71c) && (code <= 0x1d734)) ||
           ((code >= 0x1d756) && (code <= 0x1d76e)) ||
           ((code >= 0x1d790) && (code <= 0x1d7a8)));
}

/**
 * xmlUCSIsCatM:
 * @code: UCS code point
 *
 * Check whether the character is part of M UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatM(int code) {
    return(((code >= 0x300) && (code <= 0x34e)) ||
           ((code >= 0x360) && (code <= 0x362)) ||
           ((code >= 0x483) && (code <= 0x486)) ||
           ((code >= 0x488) && (code <= 0x489)) ||
           ((code >= 0x591) && (code <= 0x5a1)) ||
           ((code >= 0x5a3) && (code <= 0x5b9)) ||
           ((code >= 0x5bb) && (code <= 0x5bd)) ||
           (code == 0x5bf) ||
           ((code >= 0x5c1) && (code <= 0x5c2)) ||
           (code == 0x5c4) ||
           ((code >= 0x64b) && (code <= 0x655)) ||
           (code == 0x670) ||
           ((code >= 0x6d6) && (code <= 0x6e4)) ||
           ((code >= 0x6e7) && (code <= 0x6e8)) ||
           ((code >= 0x6ea) && (code <= 0x6ed)) ||
           (code == 0x711) ||
           ((code >= 0x730) && (code <= 0x74a)) ||
           ((code >= 0x7a6) && (code <= 0x7b0)) ||
           ((code >= 0x901) && (code <= 0x903)) ||
           (code == 0x93c) ||
           ((code >= 0x93e) && (code <= 0x94d)) ||
           ((code >= 0x951) && (code <= 0x954)) ||
           ((code >= 0x962) && (code <= 0x963)) ||
           ((code >= 0x981) && (code <= 0x983)) ||
           (code == 0x9bc) ||
           ((code >= 0x9be) && (code <= 0x9c4)) ||
           ((code >= 0x9c7) && (code <= 0x9c8)) ||
           ((code >= 0x9cb) && (code <= 0x9cd)) ||
           (code == 0x9d7) ||
           ((code >= 0x9e2) && (code <= 0x9e3)) ||
           (code == 0xa02) ||
           (code == 0xa3c) ||
           ((code >= 0xa3e) && (code <= 0xa42)) ||
           ((code >= 0xa47) && (code <= 0xa48)) ||
           ((code >= 0xa4b) && (code <= 0xa4d)) ||
           ((code >= 0xa70) && (code <= 0xa71)) ||
           ((code >= 0xa81) && (code <= 0xa83)) ||
           (code == 0xabc) ||
           ((code >= 0xabe) && (code <= 0xac5)) ||
           ((code >= 0xac7) && (code <= 0xac9)) ||
           ((code >= 0xacb) && (code <= 0xacd)) ||
           ((code >= 0xb01) && (code <= 0xb03)) ||
           (code == 0xb3c) ||
           ((code >= 0xb3e) && (code <= 0xb43)) ||
           ((code >= 0xb47) && (code <= 0xb48)) ||
           ((code >= 0xb4b) && (code <= 0xb4d)) ||
           ((code >= 0xb56) && (code <= 0xb57)) ||
           ((code >= 0xb82) && (code <= 0xb83)) ||
           ((code >= 0xbbe) && (code <= 0xbc2)) ||
           ((code >= 0xbc6) && (code <= 0xbc8)) ||
           ((code >= 0xbca) && (code <= 0xbcd)) ||
           (code == 0xbd7) ||
           ((code >= 0xc01) && (code <= 0xc03)) ||
           ((code >= 0xc3e) && (code <= 0xc44)) ||
           ((code >= 0xc46) && (code <= 0xc48)) ||
           ((code >= 0xc4a) && (code <= 0xc4d)) ||
           ((code >= 0xc55) && (code <= 0xc56)) ||
           ((code >= 0xc82) && (code <= 0xc83)) ||
           ((code >= 0xcbe) && (code <= 0xcc4)) ||
           ((code >= 0xcc6) && (code <= 0xcc8)) ||
           ((code >= 0xcca) && (code <= 0xccd)) ||
           ((code >= 0xcd5) && (code <= 0xcd6)) ||
           ((code >= 0xd02) && (code <= 0xd03)) ||
           ((code >= 0xd3e) && (code <= 0xd43)) ||
           ((code >= 0xd46) && (code <= 0xd48)) ||
           ((code >= 0xd4a) && (code <= 0xd4d)) ||
           (code == 0xd57) ||
           ((code >= 0xd82) && (code <= 0xd83)) ||
           (code == 0xdca) ||
           ((code >= 0xdcf) && (code <= 0xdd4)) ||
           (code == 0xdd6) ||
           ((code >= 0xdd8) && (code <= 0xddf)) ||
           ((code >= 0xdf2) && (code <= 0xdf3)) ||
           (code == 0xe31) ||
           ((code >= 0xe34) && (code <= 0xe3a)) ||
           ((code >= 0xe47) && (code <= 0xe4e)) ||
           (code == 0xeb1) ||
           ((code >= 0xeb4) && (code <= 0xeb9)) ||
           ((code >= 0xebb) && (code <= 0xebc)) ||
           ((code >= 0xec8) && (code <= 0xecd)) ||
           ((code >= 0xf18) && (code <= 0xf19)) ||
           (code == 0xf35) ||
           (code == 0xf37) ||
           (code == 0xf39) ||
           ((code >= 0xf3e) && (code <= 0xf3f)) ||
           ((code >= 0xf71) && (code <= 0xf84)) ||
           ((code >= 0xf86) && (code <= 0xf87)) ||
           ((code >= 0xf90) && (code <= 0xf97)) ||
           ((code >= 0xf99) && (code <= 0xfbc)) ||
           (code == 0xfc6) ||
           ((code >= 0x102c) && (code <= 0x1032)) ||
           ((code >= 0x1036) && (code <= 0x1039)) ||
           ((code >= 0x1056) && (code <= 0x1059)) ||
           ((code >= 0x17b4) && (code <= 0x17d3)) ||
           (code == 0x18a9) ||
           ((code >= 0x20d0) && (code <= 0x20e3)) ||
           ((code >= 0x302a) && (code <= 0x302f)) ||
           ((code >= 0x3099) && (code <= 0x309a)) ||
           (code == 0xfb1e) ||
           ((code >= 0xfe20) && (code <= 0xfe23)) ||
           ((code >= 0x1d165) && (code <= 0x1d169)) ||
           ((code >= 0x1d16d) && (code <= 0x1d172)) ||
           ((code >= 0x1d17b) && (code <= 0x1d182)) ||
           ((code >= 0x1d185) && (code <= 0x1d18b)) ||
           ((code >= 0x1d1aa) && (code <= 0x1d1ad)));
}

/**
 * xmlUCSIsCatMc:
 * @code: UCS code point
 *
 * Check whether the character is part of Mc UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatMc(int code) {
    return((code == 0x903) ||
           ((code >= 0x93e) && (code <= 0x940)) ||
           ((code >= 0x949) && (code <= 0x94c)) ||
           ((code >= 0x982) && (code <= 0x983)) ||
           ((code >= 0x9be) && (code <= 0x9c0)) ||
           ((code >= 0x9c7) && (code <= 0x9c8)) ||
           ((code >= 0x9cb) && (code <= 0x9cc)) ||
           (code == 0x9d7) ||
           ((code >= 0xa3e) && (code <= 0xa40)) ||
           (code == 0xa83) ||
           ((code >= 0xabe) && (code <= 0xac0)) ||
           (code == 0xac9) ||
           ((code >= 0xacb) && (code <= 0xacc)) ||
           ((code >= 0xb02) && (code <= 0xb03)) ||
           (code == 0xb3e) ||
           (code == 0xb40) ||
           ((code >= 0xb47) && (code <= 0xb48)) ||
           ((code >= 0xb4b) && (code <= 0xb4c)) ||
           (code == 0xb57) ||
           (code == 0xb83) ||
           ((code >= 0xbbe) && (code <= 0xbbf)) ||
           ((code >= 0xbc1) && (code <= 0xbc2)) ||
           ((code >= 0xbc6) && (code <= 0xbc8)) ||
           ((code >= 0xbca) && (code <= 0xbcc)) ||
           (code == 0xbd7) ||
           ((code >= 0xc01) && (code <= 0xc03)) ||
           ((code >= 0xc41) && (code <= 0xc44)) ||
           ((code >= 0xc82) && (code <= 0xc83)) ||
           (code == 0xcbe) ||
           ((code >= 0xcc0) && (code <= 0xcc4)) ||
           ((code >= 0xcc7) && (code <= 0xcc8)) ||
           ((code >= 0xcca) && (code <= 0xccb)) ||
           ((code >= 0xcd5) && (code <= 0xcd6)) ||
           ((code >= 0xd02) && (code <= 0xd03)) ||
           ((code >= 0xd3e) && (code <= 0xd40)) ||
           ((code >= 0xd46) && (code <= 0xd48)) ||
           ((code >= 0xd4a) && (code <= 0xd4c)) ||
           (code == 0xd57) ||
           ((code >= 0xd82) && (code <= 0xd83)) ||
           ((code >= 0xdcf) && (code <= 0xdd1)) ||
           ((code >= 0xdd8) && (code <= 0xddf)) ||
           ((code >= 0xdf2) && (code <= 0xdf3)) ||
           ((code >= 0xf3e) && (code <= 0xf3f)) ||
           (code == 0xf7f) ||
           (code == 0x102c) ||
           (code == 0x1031) ||
           (code == 0x1038) ||
           ((code >= 0x1056) && (code <= 0x1057)) ||
           ((code >= 0x17b4) && (code <= 0x17b6)) ||
           ((code >= 0x17be) && (code <= 0x17c5)) ||
           ((code >= 0x17c7) && (code <= 0x17c8)) ||
           ((code >= 0x1d165) && (code <= 0x1d166)) ||
           ((code >= 0x1d16d) && (code <= 0x1d172)));
}

/**
 * xmlUCSIsCatMe:
 * @code: UCS code point
 *
 * Check whether the character is part of Me UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatMe(int code) {
    return(((code >= 0x488) && (code <= 0x489)) ||
           ((code >= 0x6dd) && (code <= 0x6de)) ||
           ((code >= 0x20dd) && (code <= 0x20e0)) ||
           ((code >= 0x20e2) && (code <= 0x20e3)));
}

/**
 * xmlUCSIsCatMn:
 * @code: UCS code point
 *
 * Check whether the character is part of Mn UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatMn(int code) {
    return(((code >= 0x300) && (code <= 0x34e)) ||
           ((code >= 0x360) && (code <= 0x362)) ||
           ((code >= 0x483) && (code <= 0x486)) ||
           ((code >= 0x591) && (code <= 0x5a1)) ||
           ((code >= 0x5a3) && (code <= 0x5b9)) ||
           ((code >= 0x5bb) && (code <= 0x5bd)) ||
           (code == 0x5bf) ||
           ((code >= 0x5c1) && (code <= 0x5c2)) ||
           (code == 0x5c4) ||
           ((code >= 0x64b) && (code <= 0x655)) ||
           (code == 0x670) ||
           ((code >= 0x6d6) && (code <= 0x6dc)) ||
           ((code >= 0x6df) && (code <= 0x6e4)) ||
           ((code >= 0x6e7) && (code <= 0x6e8)) ||
           ((code >= 0x6ea) && (code <= 0x6ed)) ||
           (code == 0x711) ||
           ((code >= 0x730) && (code <= 0x74a)) ||
           ((code >= 0x7a6) && (code <= 0x7b0)) ||
           ((code >= 0x901) && (code <= 0x902)) ||
           (code == 0x93c) ||
           ((code >= 0x941) && (code <= 0x948)) ||
           (code == 0x94d) ||
           ((code >= 0x951) && (code <= 0x954)) ||
           ((code >= 0x962) && (code <= 0x963)) ||
           (code == 0x981) ||
           (code == 0x9bc) ||
           ((code >= 0x9c1) && (code <= 0x9c4)) ||
           (code == 0x9cd) ||
           ((code >= 0x9e2) && (code <= 0x9e3)) ||
           (code == 0xa02) ||
           (code == 0xa3c) ||
           ((code >= 0xa41) && (code <= 0xa42)) ||
           ((code >= 0xa47) && (code <= 0xa48)) ||
           ((code >= 0xa4b) && (code <= 0xa4d)) ||
           ((code >= 0xa70) && (code <= 0xa71)) ||
           ((code >= 0xa81) && (code <= 0xa82)) ||
           (code == 0xabc) ||
           ((code >= 0xac1) && (code <= 0xac5)) ||
           ((code >= 0xac7) && (code <= 0xac8)) ||
           (code == 0xacd) ||
           (code == 0xb01) ||
           (code == 0xb3c) ||
           (code == 0xb3f) ||
           ((code >= 0xb41) && (code <= 0xb43)) ||
           (code == 0xb4d) ||
           (code == 0xb56) ||
           (code == 0xb82) ||
           (code == 0xbc0) ||
           (code == 0xbcd) ||
           ((code >= 0xc3e) && (code <= 0xc40)) ||
           ((code >= 0xc46) && (code <= 0xc48)) ||
           ((code >= 0xc4a) && (code <= 0xc4d)) ||
           ((code >= 0xc55) && (code <= 0xc56)) ||
           (code == 0xcbf) ||
           (code == 0xcc6) ||
           ((code >= 0xccc) && (code <= 0xccd)) ||
           ((code >= 0xd41) && (code <= 0xd43)) ||
           (code == 0xd4d) ||
           (code == 0xdca) ||
           ((code >= 0xdd2) && (code <= 0xdd4)) ||
           (code == 0xdd6) ||
           (code == 0xe31) ||
           ((code >= 0xe34) && (code <= 0xe3a)) ||
           ((code >= 0xe47) && (code <= 0xe4e)) ||
           (code == 0xeb1) ||
           ((code >= 0xeb4) && (code <= 0xeb9)) ||
           ((code >= 0xebb) && (code <= 0xebc)) ||
           ((code >= 0xec8) && (code <= 0xecd)) ||
           ((code >= 0xf18) && (code <= 0xf19)) ||
           (code == 0xf35) ||
           (code == 0xf37) ||
           (code == 0xf39) ||
           ((code >= 0xf71) && (code <= 0xf7e)) ||
           ((code >= 0xf80) && (code <= 0xf84)) ||
           ((code >= 0xf86) && (code <= 0xf87)) ||
           ((code >= 0xf90) && (code <= 0xf97)) ||
           ((code >= 0xf99) && (code <= 0xfbc)) ||
           (code == 0xfc6) ||
           ((code >= 0x102d) && (code <= 0x1030)) ||
           (code == 0x1032) ||
           ((code >= 0x1036) && (code <= 0x1037)) ||
           (code == 0x1039) ||
           ((code >= 0x1058) && (code <= 0x1059)) ||
           ((code >= 0x17b7) && (code <= 0x17bd)) ||
           (code == 0x17c6) ||
           ((code >= 0x17c9) && (code <= 0x17d3)) ||
           (code == 0x18a9) ||
           ((code >= 0x20d0) && (code <= 0x20dc)) ||
           (code == 0x20e1) ||
           ((code >= 0x302a) && (code <= 0x302f)) ||
           ((code >= 0x3099) && (code <= 0x309a)) ||
           (code == 0xfb1e) ||
           ((code >= 0xfe20) && (code <= 0xfe23)) ||
           ((code >= 0x1d167) && (code <= 0x1d169)) ||
           ((code >= 0x1d17b) && (code <= 0x1d182)) ||
           ((code >= 0x1d185) && (code <= 0x1d18b)) ||
           ((code >= 0x1d1aa) && (code <= 0x1d1ad)));
}

/**
 * xmlUCSIsCatN:
 * @code: UCS code point
 *
 * Check whether the character is part of N UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatN(int code) {
    return(((code >= 0x30) && (code <= 0x39)) ||
           ((code >= 0xb2) && (code <= 0xb3)) ||
           (code == 0xb9) ||
           ((code >= 0xbc) && (code <= 0xbe)) ||
           ((code >= 0x660) && (code <= 0x669)) ||
           ((code >= 0x6f0) && (code <= 0x6f9)) ||
           ((code >= 0x966) && (code <= 0x96f)) ||
           ((code >= 0x9e6) && (code <= 0x9ef)) ||
           ((code >= 0x9f4) && (code <= 0x9f9)) ||
           ((code >= 0xa66) && (code <= 0xa6f)) ||
           ((code >= 0xae6) && (code <= 0xaef)) ||
           ((code >= 0xb66) && (code <= 0xb6f)) ||
           ((code >= 0xbe7) && (code <= 0xbf2)) ||
           ((code >= 0xc66) && (code <= 0xc6f)) ||
           ((code >= 0xce6) && (code <= 0xcef)) ||
           ((code >= 0xd66) && (code <= 0xd6f)) ||
           ((code >= 0xe50) && (code <= 0xe59)) ||
           ((code >= 0xed0) && (code <= 0xed9)) ||
           ((code >= 0xf20) && (code <= 0xf33)) ||
           ((code >= 0x1040) && (code <= 0x1049)) ||
           ((code >= 0x1369) && (code <= 0x137c)) ||
           ((code >= 0x16ee) && (code <= 0x16f0)) ||
           ((code >= 0x17e0) && (code <= 0x17e9)) ||
           ((code >= 0x1810) && (code <= 0x1819)) ||
           (code == 0x2070) ||
           ((code >= 0x2074) && (code <= 0x2079)) ||
           ((code >= 0x2080) && (code <= 0x2089)) ||
           ((code >= 0x2153) && (code <= 0x2183)) ||
           ((code >= 0x2460) && (code <= 0x249b)) ||
           (code == 0x24ea) ||
           ((code >= 0x2776) && (code <= 0x2793)) ||
           (code == 0x3007) ||
           ((code >= 0x3021) && (code <= 0x3029)) ||
           ((code >= 0x3038) && (code <= 0x303a)) ||
           ((code >= 0x3192) && (code <= 0x3195)) ||
           ((code >= 0x3220) && (code <= 0x3229)) ||
           ((code >= 0x3280) && (code <= 0x3289)) ||
           ((code >= 0xff10) && (code <= 0xff19)) ||
           ((code >= 0x10320) && (code <= 0x10323)) ||
           (code == 0x1034a) ||
           ((code >= 0x1d7ce) && (code <= 0x1d7ff)));
}

/**
 * xmlUCSIsCatNd:
 * @code: UCS code point
 *
 * Check whether the character is part of Nd UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatNd(int code) {
    return(((code >= 0x30) && (code <= 0x39)) ||
           ((code >= 0x660) && (code <= 0x669)) ||
           ((code >= 0x6f0) && (code <= 0x6f9)) ||
           ((code >= 0x966) && (code <= 0x96f)) ||
           ((code >= 0x9e6) && (code <= 0x9ef)) ||
           ((code >= 0xa66) && (code <= 0xa6f)) ||
           ((code >= 0xae6) && (code <= 0xaef)) ||
           ((code >= 0xb66) && (code <= 0xb6f)) ||
           ((code >= 0xbe7) && (code <= 0xbef)) ||
           ((code >= 0xc66) && (code <= 0xc6f)) ||
           ((code >= 0xce6) && (code <= 0xcef)) ||
           ((code >= 0xd66) && (code <= 0xd6f)) ||
           ((code >= 0xe50) && (code <= 0xe59)) ||
           ((code >= 0xed0) && (code <= 0xed9)) ||
           ((code >= 0xf20) && (code <= 0xf29)) ||
           ((code >= 0x1040) && (code <= 0x1049)) ||
           ((code >= 0x1369) && (code <= 0x1371)) ||
           ((code >= 0x17e0) && (code <= 0x17e9)) ||
           ((code >= 0x1810) && (code <= 0x1819)) ||
           ((code >= 0xff10) && (code <= 0xff19)) ||
           ((code >= 0x1d7ce) && (code <= 0x1d7ff)));
}

/**
 * xmlUCSIsCatNl:
 * @code: UCS code point
 *
 * Check whether the character is part of Nl UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatNl(int code) {
    return(((code >= 0x16ee) && (code <= 0x16f0)) ||
           ((code >= 0x2160) && (code <= 0x2183)) ||
           (code == 0x3007) ||
           ((code >= 0x3021) && (code <= 0x3029)) ||
           ((code >= 0x3038) && (code <= 0x303a)) ||
           (code == 0x1034a));
}

/**
 * xmlUCSIsCatNo:
 * @code: UCS code point
 *
 * Check whether the character is part of No UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatNo(int code) {
    return(((code >= 0xb2) && (code <= 0xb3)) ||
           (code == 0xb9) ||
           ((code >= 0xbc) && (code <= 0xbe)) ||
           ((code >= 0x9f4) && (code <= 0x9f9)) ||
           ((code >= 0xbf0) && (code <= 0xbf2)) ||
           ((code >= 0xf2a) && (code <= 0xf33)) ||
           ((code >= 0x1372) && (code <= 0x137c)) ||
           (code == 0x2070) ||
           ((code >= 0x2074) && (code <= 0x2079)) ||
           ((code >= 0x2080) && (code <= 0x2089)) ||
           ((code >= 0x2153) && (code <= 0x215f)) ||
           ((code >= 0x2460) && (code <= 0x249b)) ||
           (code == 0x24ea) ||
           ((code >= 0x2776) && (code <= 0x2793)) ||
           ((code >= 0x3192) && (code <= 0x3195)) ||
           ((code >= 0x3220) && (code <= 0x3229)) ||
           ((code >= 0x3280) && (code <= 0x3289)) ||
           ((code >= 0x10320) && (code <= 0x10323)));
}

/**
 * xmlUCSIsCatP:
 * @code: UCS code point
 *
 * Check whether the character is part of P UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatP(int code) {
    return(((code >= 0x21) && (code <= 0x23)) ||
           ((code >= 0x25) && (code <= 0x2a)) ||
           ((code >= 0x2c) && (code <= 0x2f)) ||
           ((code >= 0x3a) && (code <= 0x3b)) ||
           ((code >= 0x3f) && (code <= 0x40)) ||
           ((code >= 0x5b) && (code <= 0x5d)) ||
           (code == 0x5f) ||
           (code == 0x7b) ||
           (code == 0x7d) ||
           (code == 0xa1) ||
           (code == 0xab) ||
           (code == 0xad) ||
           (code == 0xb7) ||
           (code == 0xbb) ||
           (code == 0xbf) ||
           (code == 0x37e) ||
           (code == 0x387) ||
           ((code >= 0x55a) && (code <= 0x55f)) ||
           ((code >= 0x589) && (code <= 0x58a)) ||
           (code == 0x5be) ||
           (code == 0x5c0) ||
           (code == 0x5c3) ||
           ((code >= 0x5f3) && (code <= 0x5f4)) ||
           (code == 0x60c) ||
           (code == 0x61b) ||
           (code == 0x61f) ||
           ((code >= 0x66a) && (code <= 0x66d)) ||
           (code == 0x6d4) ||
           ((code >= 0x700) && (code <= 0x70d)) ||
           ((code >= 0x964) && (code <= 0x965)) ||
           (code == 0x970) ||
           (code == 0xdf4) ||
           (code == 0xe4f) ||
           ((code >= 0xe5a) && (code <= 0xe5b)) ||
           ((code >= 0xf04) && (code <= 0xf12)) ||
           ((code >= 0xf3a) && (code <= 0xf3d)) ||
           (code == 0xf85) ||
           ((code >= 0x104a) && (code <= 0x104f)) ||
           (code == 0x10fb) ||
           ((code >= 0x1361) && (code <= 0x1368)) ||
           ((code >= 0x166d) && (code <= 0x166e)) ||
           ((code >= 0x169b) && (code <= 0x169c)) ||
           ((code >= 0x16eb) && (code <= 0x16ed)) ||
           ((code >= 0x17d4) && (code <= 0x17da)) ||
           (code == 0x17dc) ||
           ((code >= 0x1800) && (code <= 0x180a)) ||
           ((code >= 0x2010) && (code <= 0x2027)) ||
           ((code >= 0x2030) && (code <= 0x2043)) ||
           ((code >= 0x2045) && (code <= 0x2046)) ||
           ((code >= 0x2048) && (code <= 0x204d)) ||
           ((code >= 0x207d) && (code <= 0x207e)) ||
           ((code >= 0x208d) && (code <= 0x208e)) ||
           ((code >= 0x2329) && (code <= 0x232a)) ||
           ((code >= 0x3001) && (code <= 0x3003)) ||
           ((code >= 0x3008) && (code <= 0x3011)) ||
           ((code >= 0x3014) && (code <= 0x301f)) ||
           (code == 0x3030) ||
           (code == 0x30fb) ||
           ((code >= 0xfd3e) && (code <= 0xfd3f)) ||
           ((code >= 0xfe30) && (code <= 0xfe44)) ||
           ((code >= 0xfe49) && (code <= 0xfe52)) ||
           ((code >= 0xfe54) && (code <= 0xfe61)) ||
           (code == 0xfe63) ||
           (code == 0xfe68) ||
           ((code >= 0xfe6a) && (code <= 0xfe6b)) ||
           ((code >= 0xff01) && (code <= 0xff03)) ||
           ((code >= 0xff05) && (code <= 0xff0a)) ||
           ((code >= 0xff0c) && (code <= 0xff0f)) ||
           ((code >= 0xff1a) && (code <= 0xff1b)) ||
           ((code >= 0xff1f) && (code <= 0xff20)) ||
           ((code >= 0xff3b) && (code <= 0xff3d)) ||
           (code == 0xff3f) ||
           (code == 0xff5b) ||
           (code == 0xff5d) ||
           ((code >= 0xff61) && (code <= 0xff65)));
}

/**
 * xmlUCSIsCatPc:
 * @code: UCS code point
 *
 * Check whether the character is part of Pc UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatPc(int code) {
    return((code == 0x5f) ||
           ((code >= 0x203f) && (code <= 0x2040)) ||
           (code == 0x30fb) ||
           ((code >= 0xfe33) && (code <= 0xfe34)) ||
           ((code >= 0xfe4d) && (code <= 0xfe4f)) ||
           (code == 0xff3f) ||
           (code == 0xff65));
}

/**
 * xmlUCSIsCatPd:
 * @code: UCS code point
 *
 * Check whether the character is part of Pd UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatPd(int code) {
    return((code == 0x2d) ||
           (code == 0xad) ||
           (code == 0x58a) ||
           (code == 0x1806) ||
           ((code >= 0x2010) && (code <= 0x2015)) ||
           (code == 0x301c) ||
           (code == 0x3030) ||
           ((code >= 0xfe31) && (code <= 0xfe32)) ||
           (code == 0xfe58) ||
           (code == 0xfe63) ||
           (code == 0xff0d));
}

/**
 * xmlUCSIsCatPe:
 * @code: UCS code point
 *
 * Check whether the character is part of Pe UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatPe(int code) {
    return((code == 0x29) ||
           (code == 0x5d) ||
           (code == 0x7d) ||
           (code == 0xf3b) ||
           (code == 0xf3d) ||
           (code == 0x169c) ||
           (code == 0x2046) ||
           (code == 0x207e) ||
           (code == 0x208e) ||
           (code == 0x232a) ||
           (code == 0x3009) ||
           (code == 0x300b) ||
           (code == 0x300d) ||
           (code == 0x300f) ||
           (code == 0x3011) ||
           (code == 0x3015) ||
           (code == 0x3017) ||
           (code == 0x3019) ||
           (code == 0x301b) ||
           ((code >= 0x301e) && (code <= 0x301f)) ||
           (code == 0xfd3f) ||
           (code == 0xfe36) ||
           (code == 0xfe38) ||
           (code == 0xfe3a) ||
           (code == 0xfe3c) ||
           (code == 0xfe3e) ||
           (code == 0xfe40) ||
           (code == 0xfe42) ||
           (code == 0xfe44) ||
           (code == 0xfe5a) ||
           (code == 0xfe5c) ||
           (code == 0xfe5e) ||
           (code == 0xff09) ||
           (code == 0xff3d) ||
           (code == 0xff5d) ||
           (code == 0xff63));
}

/**
 * xmlUCSIsCatPf:
 * @code: UCS code point
 *
 * Check whether the character is part of Pf UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatPf(int code) {
    return((code == 0xbb) ||
           (code == 0x2019) ||
           (code == 0x201d) ||
           (code == 0x203a));
}

/**
 * xmlUCSIsCatPi:
 * @code: UCS code point
 *
 * Check whether the character is part of Pi UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatPi(int code) {
    return((code == 0xab) ||
           (code == 0x2018) ||
           ((code >= 0x201b) && (code <= 0x201c)) ||
           (code == 0x201f) ||
           (code == 0x2039));
}

/**
 * xmlUCSIsCatPo:
 * @code: UCS code point
 *
 * Check whether the character is part of Po UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatPo(int code) {
    return(((code >= 0x21) && (code <= 0x23)) ||
           ((code >= 0x25) && (code <= 0x27)) ||
           (code == 0x2a) ||
           (code == 0x2c) ||
           ((code >= 0x2e) && (code <= 0x2f)) ||
           ((code >= 0x3a) && (code <= 0x3b)) ||
           ((code >= 0x3f) && (code <= 0x40)) ||
           (code == 0x5c) ||
           (code == 0xa1) ||
           (code == 0xb7) ||
           (code == 0xbf) ||
           (code == 0x37e) ||
           (code == 0x387) ||
           ((code >= 0x55a) && (code <= 0x55f)) ||
           (code == 0x589) ||
           (code == 0x5be) ||
           (code == 0x5c0) ||
           (code == 0x5c3) ||
           ((code >= 0x5f3) && (code <= 0x5f4)) ||
           (code == 0x60c) ||
           (code == 0x61b) ||
           (code == 0x61f) ||
           ((code >= 0x66a) && (code <= 0x66d)) ||
           (code == 0x6d4) ||
           ((code >= 0x700) && (code <= 0x70d)) ||
           ((code >= 0x964) && (code <= 0x965)) ||
           (code == 0x970) ||
           (code == 0xdf4) ||
           (code == 0xe4f) ||
           ((code >= 0xe5a) && (code <= 0xe5b)) ||
           ((code >= 0xf04) && (code <= 0xf12)) ||
           (code == 0xf85) ||
           ((code >= 0x104a) && (code <= 0x104f)) ||
           (code == 0x10fb) ||
           ((code >= 0x1361) && (code <= 0x1368)) ||
           ((code >= 0x166d) && (code <= 0x166e)) ||
           ((code >= 0x16eb) && (code <= 0x16ed)) ||
           ((code >= 0x17d4) && (code <= 0x17da)) ||
           (code == 0x17dc) ||
           ((code >= 0x1800) && (code <= 0x1805)) ||
           ((code >= 0x1807) && (code <= 0x180a)) ||
           ((code >= 0x2016) && (code <= 0x2017)) ||
           ((code >= 0x2020) && (code <= 0x2027)) ||
           ((code >= 0x2030) && (code <= 0x2038)) ||
           ((code >= 0x203b) && (code <= 0x203e)) ||
           ((code >= 0x2041) && (code <= 0x2043)) ||
           ((code >= 0x2048) && (code <= 0x204d)) ||
           ((code >= 0x3001) && (code <= 0x3003)) ||
           (code == 0xfe30) ||
           ((code >= 0xfe49) && (code <= 0xfe4c)) ||
           ((code >= 0xfe50) && (code <= 0xfe52)) ||
           ((code >= 0xfe54) && (code <= 0xfe57)) ||
           ((code >= 0xfe5f) && (code <= 0xfe61)) ||
           (code == 0xfe68) ||
           ((code >= 0xfe6a) && (code <= 0xfe6b)) ||
           ((code >= 0xff01) && (code <= 0xff03)) ||
           ((code >= 0xff05) && (code <= 0xff07)) ||
           (code == 0xff0a) ||
           (code == 0xff0c) ||
           ((code >= 0xff0e) && (code <= 0xff0f)) ||
           ((code >= 0xff1a) && (code <= 0xff1b)) ||
           ((code >= 0xff1f) && (code <= 0xff20)) ||
           (code == 0xff3c) ||
           (code == 0xff61) ||
           (code == 0xff64));
}

/**
 * xmlUCSIsCatPs:
 * @code: UCS code point
 *
 * Check whether the character is part of Ps UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatPs(int code) {
    return((code == 0x28) ||
           (code == 0x5b) ||
           (code == 0x7b) ||
           (code == 0xf3a) ||
           (code == 0xf3c) ||
           (code == 0x169b) ||
           (code == 0x201a) ||
           (code == 0x201e) ||
           (code == 0x2045) ||
           (code == 0x207d) ||
           (code == 0x208d) ||
           (code == 0x2329) ||
           (code == 0x3008) ||
           (code == 0x300a) ||
           (code == 0x300c) ||
           (code == 0x300e) ||
           (code == 0x3010) ||
           (code == 0x3014) ||
           (code == 0x3016) ||
           (code == 0x3018) ||
           (code == 0x301a) ||
           (code == 0x301d) ||
           (code == 0xfd3e) ||
           (code == 0xfe35) ||
           (code == 0xfe37) ||
           (code == 0xfe39) ||
           (code == 0xfe3b) ||
           (code == 0xfe3d) ||
           (code == 0xfe3f) ||
           (code == 0xfe41) ||
           (code == 0xfe43) ||
           (code == 0xfe59) ||
           (code == 0xfe5b) ||
           (code == 0xfe5d) ||
           (code == 0xff08) ||
           (code == 0xff3b) ||
           (code == 0xff5b) ||
           (code == 0xff62));
}

/**
 * xmlUCSIsCatS:
 * @code: UCS code point
 *
 * Check whether the character is part of S UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatS(int code) {
    return((code == 0x24) ||
           (code == 0x2b) ||
           ((code >= 0x3c) && (code <= 0x3e)) ||
           (code == 0x5e) ||
           (code == 0x60) ||
           (code == 0x7c) ||
           (code == 0x7e) ||
           ((code >= 0xa2) && (code <= 0xa9)) ||
           (code == 0xac) ||
           ((code >= 0xae) && (code <= 0xb1)) ||
           (code == 0xb4) ||
           (code == 0xb6) ||
           (code == 0xb8) ||
           (code == 0xd7) ||
           (code == 0xf7) ||
           ((code >= 0x2b9) && (code <= 0x2ba)) ||
           ((code >= 0x2c2) && (code <= 0x2cf)) ||
           ((code >= 0x2d2) && (code <= 0x2df)) ||
           ((code >= 0x2e5) && (code <= 0x2ed)) ||
           ((code >= 0x374) && (code <= 0x375)) ||
           ((code >= 0x384) && (code <= 0x385)) ||
           (code == 0x482) ||
           (code == 0x6e9) ||
           ((code >= 0x6fd) && (code <= 0x6fe)) ||
           ((code >= 0x9f2) && (code <= 0x9f3)) ||
           (code == 0x9fa) ||
           (code == 0xb70) ||
           (code == 0xe3f) ||
           ((code >= 0xf01) && (code <= 0xf03)) ||
           ((code >= 0xf13) && (code <= 0xf17)) ||
           ((code >= 0xf1a) && (code <= 0xf1f)) ||
           (code == 0xf34) ||
           (code == 0xf36) ||
           (code == 0xf38) ||
           ((code >= 0xfbe) && (code <= 0xfc5)) ||
           ((code >= 0xfc7) && (code <= 0xfcc)) ||
           (code == 0xfcf) ||
           (code == 0x17db) ||
           (code == 0x1fbd) ||
           ((code >= 0x1fbf) && (code <= 0x1fc1)) ||
           ((code >= 0x1fcd) && (code <= 0x1fcf)) ||
           ((code >= 0x1fdd) && (code <= 0x1fdf)) ||
           ((code >= 0x1fed) && (code <= 0x1fef)) ||
           ((code >= 0x1ffd) && (code <= 0x1ffe)) ||
           (code == 0x2044) ||
           ((code >= 0x207a) && (code <= 0x207c)) ||
           ((code >= 0x208a) && (code <= 0x208c)) ||
           ((code >= 0x20a0) && (code <= 0x20af)) ||
           ((code >= 0x2100) && (code <= 0x2101)) ||
           ((code >= 0x2103) && (code <= 0x2106)) ||
           ((code >= 0x2108) && (code <= 0x2109)) ||
           (code == 0x2114) ||
           ((code >= 0x2116) && (code <= 0x2118)) ||
           ((code >= 0x211e) && (code <= 0x2123)) ||
           (code == 0x2125) ||
           (code == 0x2127) ||
           (code == 0x2129) ||
           (code == 0x212e) ||
           (code == 0x2132) ||
           (code == 0x213a) ||
           ((code >= 0x2190) && (code <= 0x21f3)) ||
           ((code >= 0x2200) && (code <= 0x22f1)) ||
           ((code >= 0x2300) && (code <= 0x2328)) ||
           ((code >= 0x232b) && (code <= 0x237b)) ||
           ((code >= 0x237d) && (code <= 0x239a)) ||
           ((code >= 0x2400) && (code <= 0x2426)) ||
           ((code >= 0x2440) && (code <= 0x244a)) ||
           ((code >= 0x249c) && (code <= 0x24e9)) ||
           ((code >= 0x2500) && (code <= 0x2595)) ||
           ((code >= 0x25a0) && (code <= 0x25f7)) ||
           ((code >= 0x2600) && (code <= 0x2613)) ||
           ((code >= 0x2619) && (code <= 0x2671)) ||
           ((code >= 0x2701) && (code <= 0x2704)) ||
           ((code >= 0x2706) && (code <= 0x2709)) ||
           ((code >= 0x270c) && (code <= 0x2727)) ||
           ((code >= 0x2729) && (code <= 0x274b)) ||
           (code == 0x274d) ||
           ((code >= 0x274f) && (code <= 0x2752)) ||
           (code == 0x2756) ||
           ((code >= 0x2758) && (code <= 0x275e)) ||
           ((code >= 0x2761) && (code <= 0x2767)) ||
           (code == 0x2794) ||
           ((code >= 0x2798) && (code <= 0x27af)) ||
           ((code >= 0x27b1) && (code <= 0x27be)) ||
           ((code >= 0x2800) && (code <= 0x28ff)) ||
           ((code >= 0x2e80) && (code <= 0x2e99)) ||
           ((code >= 0x2e9b) && (code <= 0x2ef3)) ||
           ((code >= 0x2f00) && (code <= 0x2fd5)) ||
           ((code >= 0x2ff0) && (code <= 0x2ffb)) ||
           (code == 0x3004) ||
           ((code >= 0x3012) && (code <= 0x3013)) ||
           (code == 0x3020) ||
           ((code >= 0x3036) && (code <= 0x3037)) ||
           ((code >= 0x303e) && (code <= 0x303f)) ||
           ((code >= 0x309b) && (code <= 0x309c)) ||
           ((code >= 0x3190) && (code <= 0x3191)) ||
           ((code >= 0x3196) && (code <= 0x319f)) ||
           ((code >= 0x3200) && (code <= 0x321c)) ||
           ((code >= 0x322a) && (code <= 0x3243)) ||
           ((code >= 0x3260) && (code <= 0x327b)) ||
           (code == 0x327f) ||
           ((code >= 0x328a) && (code <= 0x32b0)) ||
           ((code >= 0x32c0) && (code <= 0x32cb)) ||
           ((code >= 0x32d0) && (code <= 0x32fe)) ||
           ((code >= 0x3300) && (code <= 0x3376)) ||
           ((code >= 0x337b) && (code <= 0x33dd)) ||
           ((code >= 0x33e0) && (code <= 0x33fe)) ||
           ((code >= 0xa490) && (code <= 0xa4a1)) ||
           ((code >= 0xa4a4) && (code <= 0xa4b3)) ||
           ((code >= 0xa4b5) && (code <= 0xa4c0)) ||
           ((code >= 0xa4c2) && (code <= 0xa4c4)) ||
           (code == 0xa4c6) ||
           (code == 0xfb29) ||
           (code == 0xfe62) ||
           ((code >= 0xfe64) && (code <= 0xfe66)) ||
           (code == 0xfe69) ||
           (code == 0xff04) ||
           (code == 0xff0b) ||
           ((code >= 0xff1c) && (code <= 0xff1e)) ||
           (code == 0xff3e) ||
           (code == 0xff40) ||
           (code == 0xff5c) ||
           (code == 0xff5e) ||
           ((code >= 0xffe0) && (code <= 0xffe6)) ||
           ((code >= 0xffe8) && (code <= 0xffee)) ||
           ((code >= 0xfffc) && (code <= 0xfffd)) ||
           ((code >= 0x1d000) && (code <= 0x1d0f5)) ||
           ((code >= 0x1d100) && (code <= 0x1d126)) ||
           ((code >= 0x1d12a) && (code <= 0x1d164)) ||
           ((code >= 0x1d16a) && (code <= 0x1d16c)) ||
           ((code >= 0x1d183) && (code <= 0x1d184)) ||
           ((code >= 0x1d18c) && (code <= 0x1d1a9)) ||
           ((code >= 0x1d1ae) && (code <= 0x1d1dd)) ||
           (code == 0x1d6c1) ||
           (code == 0x1d6db) ||
           (code == 0x1d6fb) ||
           (code == 0x1d715) ||
           (code == 0x1d735) ||
           (code == 0x1d74f) ||
           (code == 0x1d76f) ||
           (code == 0x1d789) ||
           (code == 0x1d7a9) ||
           (code == 0x1d7c3));
}

/**
 * xmlUCSIsCatSc:
 * @code: UCS code point
 *
 * Check whether the character is part of Sc UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatSc(int code) {
    return((code == 0x24) ||
           ((code >= 0xa2) && (code <= 0xa5)) ||
           ((code >= 0x9f2) && (code <= 0x9f3)) ||
           (code == 0xe3f) ||
           (code == 0x17db) ||
           ((code >= 0x20a0) && (code <= 0x20af)) ||
           (code == 0xfe69) ||
           (code == 0xff04) ||
           ((code >= 0xffe0) && (code <= 0xffe1)) ||
           ((code >= 0xffe5) && (code <= 0xffe6)));
}

/**
 * xmlUCSIsCatSk:
 * @code: UCS code point
 *
 * Check whether the character is part of Sk UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatSk(int code) {
    return((code == 0x5e) ||
           (code == 0x60) ||
           (code == 0xa8) ||
           (code == 0xaf) ||
           (code == 0xb4) ||
           (code == 0xb8) ||
           ((code >= 0x2b9) && (code <= 0x2ba)) ||
           ((code >= 0x2c2) && (code <= 0x2cf)) ||
           ((code >= 0x2d2) && (code <= 0x2df)) ||
           ((code >= 0x2e5) && (code <= 0x2ed)) ||
           ((code >= 0x374) && (code <= 0x375)) ||
           ((code >= 0x384) && (code <= 0x385)) ||
           (code == 0x1fbd) ||
           ((code >= 0x1fbf) && (code <= 0x1fc1)) ||
           ((code >= 0x1fcd) && (code <= 0x1fcf)) ||
           ((code >= 0x1fdd) && (code <= 0x1fdf)) ||
           ((code >= 0x1fed) && (code <= 0x1fef)) ||
           ((code >= 0x1ffd) && (code <= 0x1ffe)) ||
           ((code >= 0x309b) && (code <= 0x309c)) ||
           (code == 0xff3e) ||
           (code == 0xff40) ||
           (code == 0xffe3));
}

/**
 * xmlUCSIsCatSm:
 * @code: UCS code point
 *
 * Check whether the character is part of Sm UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatSm(int code) {
    return((code == 0x2b) ||
           ((code >= 0x3c) && (code <= 0x3e)) ||
           (code == 0x7c) ||
           (code == 0x7e) ||
           (code == 0xac) ||
           (code == 0xb1) ||
           (code == 0xd7) ||
           (code == 0xf7) ||
           (code == 0x2044) ||
           ((code >= 0x207a) && (code <= 0x207c)) ||
           ((code >= 0x208a) && (code <= 0x208c)) ||
           ((code >= 0x2190) && (code <= 0x2194)) ||
           ((code >= 0x219a) && (code <= 0x219b)) ||
           (code == 0x21a0) ||
           (code == 0x21a3) ||
           (code == 0x21a6) ||
           (code == 0x21ae) ||
           ((code >= 0x21ce) && (code <= 0x21cf)) ||
           (code == 0x21d2) ||
           (code == 0x21d4) ||
           ((code >= 0x2200) && (code <= 0x22f1)) ||
           ((code >= 0x2308) && (code <= 0x230b)) ||
           ((code >= 0x2320) && (code <= 0x2321)) ||
           (code == 0x25b7) ||
           (code == 0x25c1) ||
           (code == 0x266f) ||
           (code == 0xfb29) ||
           (code == 0xfe62) ||
           ((code >= 0xfe64) && (code <= 0xfe66)) ||
           (code == 0xff0b) ||
           ((code >= 0xff1c) && (code <= 0xff1e)) ||
           (code == 0xff5c) ||
           (code == 0xff5e) ||
           (code == 0xffe2) ||
           ((code >= 0xffe9) && (code <= 0xffec)) ||
           (code == 0x1d6c1) ||
           (code == 0x1d6db) ||
           (code == 0x1d6fb) ||
           (code == 0x1d715) ||
           (code == 0x1d735) ||
           (code == 0x1d74f) ||
           (code == 0x1d76f) ||
           (code == 0x1d789) ||
           (code == 0x1d7a9) ||
           (code == 0x1d7c3));
}

/**
 * xmlUCSIsCatSo:
 * @code: UCS code point
 *
 * Check whether the character is part of So UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatSo(int code) {
    return(((code >= 0xa6) && (code <= 0xa7)) ||
           (code == 0xa9) ||
           (code == 0xae) ||
           (code == 0xb0) ||
           (code == 0xb6) ||
           (code == 0x482) ||
           (code == 0x6e9) ||
           ((code >= 0x6fd) && (code <= 0x6fe)) ||
           (code == 0x9fa) ||
           (code == 0xb70) ||
           ((code >= 0xf01) && (code <= 0xf03)) ||
           ((code >= 0xf13) && (code <= 0xf17)) ||
           ((code >= 0xf1a) && (code <= 0xf1f)) ||
           (code == 0xf34) ||
           (code == 0xf36) ||
           (code == 0xf38) ||
           ((code >= 0xfbe) && (code <= 0xfc5)) ||
           ((code >= 0xfc7) && (code <= 0xfcc)) ||
           (code == 0xfcf) ||
           ((code >= 0x2100) && (code <= 0x2101)) ||
           ((code >= 0x2103) && (code <= 0x2106)) ||
           ((code >= 0x2108) && (code <= 0x2109)) ||
           (code == 0x2114) ||
           ((code >= 0x2116) && (code <= 0x2118)) ||
           ((code >= 0x211e) && (code <= 0x2123)) ||
           (code == 0x2125) ||
           (code == 0x2127) ||
           (code == 0x2129) ||
           (code == 0x212e) ||
           (code == 0x2132) ||
           (code == 0x213a) ||
           ((code >= 0x2195) && (code <= 0x2199)) ||
           ((code >= 0x219c) && (code <= 0x219f)) ||
           ((code >= 0x21a1) && (code <= 0x21a2)) ||
           ((code >= 0x21a4) && (code <= 0x21a5)) ||
           ((code >= 0x21a7) && (code <= 0x21ad)) ||
           ((code >= 0x21af) && (code <= 0x21cd)) ||
           ((code >= 0x21d0) && (code <= 0x21d1)) ||
           (code == 0x21d3) ||
           ((code >= 0x21d5) && (code <= 0x21f3)) ||
           ((code >= 0x2300) && (code <= 0x2307)) ||
           ((code >= 0x230c) && (code <= 0x231f)) ||
           ((code >= 0x2322) && (code <= 0x2328)) ||
           ((code >= 0x232b) && (code <= 0x237b)) ||
           ((code >= 0x237d) && (code <= 0x239a)) ||
           ((code >= 0x2400) && (code <= 0x2426)) ||
           ((code >= 0x2440) && (code <= 0x244a)) ||
           ((code >= 0x249c) && (code <= 0x24e9)) ||
           ((code >= 0x2500) && (code <= 0x2595)) ||
           ((code >= 0x25a0) && (code <= 0x25b6)) ||
           ((code >= 0x25b8) && (code <= 0x25c0)) ||
           ((code >= 0x25c2) && (code <= 0x25f7)) ||
           ((code >= 0x2600) && (code <= 0x2613)) ||
           ((code >= 0x2619) && (code <= 0x266e)) ||
           ((code >= 0x2670) && (code <= 0x2671)) ||
           ((code >= 0x2701) && (code <= 0x2704)) ||
           ((code >= 0x2706) && (code <= 0x2709)) ||
           ((code >= 0x270c) && (code <= 0x2727)) ||
           ((code >= 0x2729) && (code <= 0x274b)) ||
           (code == 0x274d) ||
           ((code >= 0x274f) && (code <= 0x2752)) ||
           (code == 0x2756) ||
           ((code >= 0x2758) && (code <= 0x275e)) ||
           ((code >= 0x2761) && (code <= 0x2767)) ||
           (code == 0x2794) ||
           ((code >= 0x2798) && (code <= 0x27af)) ||
           ((code >= 0x27b1) && (code <= 0x27be)) ||
           ((code >= 0x2800) && (code <= 0x28ff)) ||
           ((code >= 0x2e80) && (code <= 0x2e99)) ||
           ((code >= 0x2e9b) && (code <= 0x2ef3)) ||
           ((code >= 0x2f00) && (code <= 0x2fd5)) ||
           ((code >= 0x2ff0) && (code <= 0x2ffb)) ||
           (code == 0x3004) ||
           ((code >= 0x3012) && (code <= 0x3013)) ||
           (code == 0x3020) ||
           ((code >= 0x3036) && (code <= 0x3037)) ||
           ((code >= 0x303e) && (code <= 0x303f)) ||
           ((code >= 0x3190) && (code <= 0x3191)) ||
           ((code >= 0x3196) && (code <= 0x319f)) ||
           ((code >= 0x3200) && (code <= 0x321c)) ||
           ((code >= 0x322a) && (code <= 0x3243)) ||
           ((code >= 0x3260) && (code <= 0x327b)) ||
           (code == 0x327f) ||
           ((code >= 0x328a) && (code <= 0x32b0)) ||
           ((code >= 0x32c0) && (code <= 0x32cb)) ||
           ((code >= 0x32d0) && (code <= 0x32fe)) ||
           ((code >= 0x3300) && (code <= 0x3376)) ||
           ((code >= 0x337b) && (code <= 0x33dd)) ||
           ((code >= 0x33e0) && (code <= 0x33fe)) ||
           ((code >= 0xa490) && (code <= 0xa4a1)) ||
           ((code >= 0xa4a4) && (code <= 0xa4b3)) ||
           ((code >= 0xa4b5) && (code <= 0xa4c0)) ||
           ((code >= 0xa4c2) && (code <= 0xa4c4)) ||
           (code == 0xa4c6) ||
           (code == 0xffe4) ||
           (code == 0xffe8) ||
           ((code >= 0xffed) && (code <= 0xffee)) ||
           ((code >= 0xfffc) && (code <= 0xfffd)) ||
           ((code >= 0x1d000) && (code <= 0x1d0f5)) ||
           ((code >= 0x1d100) && (code <= 0x1d126)) ||
           ((code >= 0x1d12a) && (code <= 0x1d164)) ||
           ((code >= 0x1d16a) && (code <= 0x1d16c)) ||
           ((code >= 0x1d183) && (code <= 0x1d184)) ||
           ((code >= 0x1d18c) && (code <= 0x1d1a9)) ||
           ((code >= 0x1d1ae) && (code <= 0x1d1dd)));
}

/**
 * xmlUCSIsCatZ:
 * @code: UCS code point
 *
 * Check whether the character is part of Z UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatZ(int code) {
    return((code == 0x20) ||
           (code == 0xa0) ||
           (code == 0x1680) ||
           ((code >= 0x2000) && (code <= 0x200b)) ||
           ((code >= 0x2028) && (code <= 0x2029)) ||
           (code == 0x202f) ||
           (code == 0x3000));
}

/**
 * xmlUCSIsCatZl:
 * @code: UCS code point
 *
 * Check whether the character is part of Zl UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatZl(int code) {
    return((code == 0x2028));
}

/**
 * xmlUCSIsCatZp:
 * @code: UCS code point
 *
 * Check whether the character is part of Zp UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatZp(int code) {
    return((code == 0x2029));
}

/**
 * xmlUCSIsCatZs:
 * @code: UCS code point
 *
 * Check whether the character is part of Zs UCS Category
 *
 * Returns 1 if true 0 otherwise
 */
int
xmlUCSIsCatZs(int code) {
    return((code == 0x20) ||
           (code == 0xa0) ||
           (code == 0x1680) ||
           ((code >= 0x2000) && (code <= 0x200b)) ||
           (code == 0x202f) ||
           (code == 0x3000));
}

/**
 * xmlUCSIsCat:
 * @code: UCS code point
 * @cat: UCS Category name
 *
 * Check whether the caracter is part of the UCS Category
 *
 * Returns 1 if true, 0 if false and -1 on unknown category
 */
int
xmlUCSIsCat(int code, const char *cat) {
    if (!strcmp(cat, "C"))
        return(xmlUCSIsCatC(code));
    if (!strcmp(cat, "Cc"))
        return(xmlUCSIsCatCc(code));
    if (!strcmp(cat, "Cf"))
        return(xmlUCSIsCatCf(code));
    if (!strcmp(cat, "Co"))
        return(xmlUCSIsCatCo(code));
    if (!strcmp(cat, "Cs"))
        return(xmlUCSIsCatCs(code));
    if (!strcmp(cat, "L"))
        return(xmlUCSIsCatL(code));
    if (!strcmp(cat, "Ll"))
        return(xmlUCSIsCatLl(code));
    if (!strcmp(cat, "Lm"))
        return(xmlUCSIsCatLm(code));
    if (!strcmp(cat, "Lo"))
        return(xmlUCSIsCatLo(code));
    if (!strcmp(cat, "Lt"))
        return(xmlUCSIsCatLt(code));
    if (!strcmp(cat, "Lu"))
        return(xmlUCSIsCatLu(code));
    if (!strcmp(cat, "M"))
        return(xmlUCSIsCatM(code));
    if (!strcmp(cat, "Mc"))
        return(xmlUCSIsCatMc(code));
    if (!strcmp(cat, "Me"))
        return(xmlUCSIsCatMe(code));
    if (!strcmp(cat, "Mn"))
        return(xmlUCSIsCatMn(code));
    if (!strcmp(cat, "N"))
        return(xmlUCSIsCatN(code));
    if (!strcmp(cat, "Nd"))
        return(xmlUCSIsCatNd(code));
    if (!strcmp(cat, "Nl"))
        return(xmlUCSIsCatNl(code));
    if (!strcmp(cat, "No"))
        return(xmlUCSIsCatNo(code));
    if (!strcmp(cat, "P"))
        return(xmlUCSIsCatP(code));
    if (!strcmp(cat, "Pc"))
        return(xmlUCSIsCatPc(code));
    if (!strcmp(cat, "Pd"))
        return(xmlUCSIsCatPd(code));
    if (!strcmp(cat, "Pe"))
        return(xmlUCSIsCatPe(code));
    if (!strcmp(cat, "Pf"))
        return(xmlUCSIsCatPf(code));
    if (!strcmp(cat, "Pi"))
        return(xmlUCSIsCatPi(code));
    if (!strcmp(cat, "Po"))
        return(xmlUCSIsCatPo(code));
    if (!strcmp(cat, "Ps"))
        return(xmlUCSIsCatPs(code));
    if (!strcmp(cat, "S"))
        return(xmlUCSIsCatS(code));
    if (!strcmp(cat, "Sc"))
        return(xmlUCSIsCatSc(code));
    if (!strcmp(cat, "Sk"))
        return(xmlUCSIsCatSk(code));
    if (!strcmp(cat, "Sm"))
        return(xmlUCSIsCatSm(code));
    if (!strcmp(cat, "So"))
        return(xmlUCSIsCatSo(code));
    if (!strcmp(cat, "Z"))
        return(xmlUCSIsCatZ(code));
    if (!strcmp(cat, "Zl"))
        return(xmlUCSIsCatZl(code));
    if (!strcmp(cat, "Zp"))
        return(xmlUCSIsCatZp(code));
    if (!strcmp(cat, "Zs"))
        return(xmlUCSIsCatZs(code));
    return(-1);
}


#endif /* LIBXML_UNICODE_ENABLED */
