From b8a505eeda619805c08ce6942a8ea81be2255244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=B6r=C3=B6k=20Edvin?= Date: Wed, 23 Jan 2008 20:19:14 +0000 Subject: [PATCH] optimize u16_normalize, encode as hex entities (Ȁ) update dependencies to rebuild on hashtab.c change support keys with common prefix by checking match length update due to hashtab change git-svn: trunk@3536 --- ChangeLog | 8 + contrib/entitynorm/Makefile | 4 +- libclamav/encoding_aliases.h | 106 +- libclamav/entconv.c | 38 +- libclamav/entitylist.h | 3086 +++++++++++++++++----------------- libclamav/hashtab.c | 17 +- libclamav/hashtab.h | 1 + 7 files changed, 1635 insertions(+), 1625 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8961e757f..bd09121b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Wed Jan 23 21:52:06 EET 2008 (edwin) +------------------------------------ + * libclamav/entconv.c: optimize u16_normalize, encode as hex entities + (Ȁ) + * contrib/entitynorm: update dependencies to rebuild on hashtab.c change + * libclamav/hashtab.[ch]: support keys with common prefix by checking match length + * libclamav/entitylist.h, encoding_aliases.h: update due to hashtab change + Wed Jan 23 17:53:10 CET 2008 (acab) ----------------------------------- * libclamunrar_iface: realign structs (related to bb#474) diff --git a/contrib/entitynorm/Makefile b/contrib/entitynorm/Makefile index 7ad38b22f..f0e9a8f47 100644 --- a/contrib/entitynorm/Makefile +++ b/contrib/entitynorm/Makefile @@ -6,10 +6,10 @@ all: entitylist.h encoding_aliases.h gentbl encname_chars.h entities_parsed: entities entities/* entity_decl_parse.pl $(PERL) entity_decl_parse.pl $$@ -generate_entitylist: generate_entitylist.c ../../libclamav/hashtab.h +generate_entitylist: generate_entitylist.c ../../libclamav/hashtab.h ../../libclamav/hashtab.c ../../libclamav/others.c $(CC) -I. -DHAVE_CONFIG_H -DCLI_MEMFUNSONLY $< ../../libclamav/hashtab.c ../../libclamav/others.c -o $@ -generate_encoding_aliases: generate_encoding_aliases.c ../../libclamav/htmlnorm.h ../../libclamav/entconv.h ../../libclamav/cltypes.h ../../libclamav/hashtab.h ../../libclamav/hashtab.h +generate_encoding_aliases: generate_encoding_aliases.c ../../libclamav/hashtab.c ../../libclamav/others.c ../../libclamav/htmlnorm.h ../../libclamav/entconv.h ../../libclamav/cltypes.h ../../libclamav/hashtab.h ../../libclamav/hashtab.h $(CC) -I. -DHAVE_CONFIG_H -DCLI_MEMFUNSONLY $< ../../libclamav/hashtab.c ../../libclamav/others.c -o $@ entitylist.h: generate_entitylist entities_parsed diff --git a/libclamav/encoding_aliases.h b/libclamav/encoding_aliases.h index 664e27428..60733673b 100644 --- a/libclamav/encoding_aliases.h +++ b/libclamav/encoding_aliases.h @@ -21,59 +21,59 @@ #include static struct element aliases_htable_elements[] = { - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"UTF8", 8}, - {"ISO-10646/UTF-8", 8}, - {NULL, 0}, - {"UTF-16", 1}, - {"UTF16LE", 7}, - {NULL, 0}, - {"UTF-32", 0}, - {"10646-1:1993/UCS4", 0}, - {NULL, 0}, - {"UTF-16LE", 7}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"UCS-4LE", 2}, - {"UCS-4", 0}, - {"UCS2", 1}, - {"UTF-16BE", 6}, - {NULL, 0}, - {"UTF-32LE", 2}, - {NULL, 0}, - {"UTF16BE", 6}, - {"UTF32", 0}, - {"UTF-32BE", 3}, - {"UTF32LE", 2}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"UCS-4BE", 3}, - {"ISO-10646/UCS2", 1}, - {NULL, 0}, - {"10646-1:1993", 0}, - {"ISO-10646/UCS4", 0}, - {"ISO-10646", 0}, - {"UTF-8", 8}, - {"UTF32BE", 3}, - {"ISO-10646/UTF8", 8}, - {NULL, 0}, - {NULL, 0}, - {"UCS4", 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"UTF8", 8, 4}, + {"ISO-10646/UTF-8", 8, 15}, + {NULL,0,0}, + {"UTF-16", 1, 6}, + {"UTF16LE", 7, 7}, + {NULL,0,0}, + {"UTF-32", 0, 6}, + {"10646-1:1993/UCS4", 0, 17}, + {NULL,0,0}, + {"UTF-16LE", 7, 8}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"UCS-4LE", 2, 7}, + {"UCS-4", 0, 5}, + {"UCS2", 1, 4}, + {"UTF-16BE", 6, 8}, + {NULL,0,0}, + {"UTF-32LE", 2, 8}, + {NULL,0,0}, + {"UTF16BE", 6, 7}, + {"UTF32", 0, 5}, + {"UTF-32BE", 3, 8}, + {"UTF32LE", 2, 7}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"UCS-4BE", 3, 7}, + {"ISO-10646/UCS2", 1, 14}, + {NULL,0,0}, + {"10646-1:1993", 0, 12}, + {"ISO-10646/UCS4", 0, 14}, + {"ISO-10646", 0, 9}, + {"UTF-8", 8, 5}, + {"UTF32BE", 3, 7}, + {"ISO-10646/UTF8", 8, 14}, + {NULL,0,0}, + {NULL,0,0}, + {"UCS4", 0, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, }; const struct hashtable aliases_htable = { aliases_htable_elements, 53, 25, 42 diff --git a/libclamav/entconv.c b/libclamav/entconv.c index 0b7905003..6e11f1c58 100644 --- a/libclamav/entconv.c +++ b/libclamav/entconv.c @@ -67,38 +67,38 @@ typedef struct { } * iconv_t; #endif +static unsigned char tohex[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; + /* TODO: gcc refuses to inline because it consider call unlikely and code size grows */ static inline unsigned char* u16_normalize(uint16_t u16, unsigned char* out, const ssize_t limit) { assert(limit > 0 && "u16_normalize must be called with positive limit"); /* \0 is just ignored */ - if(u16 > 0 && u16 < 0xff) { + if(!u16) { + return out; + } + + if(u16 < 0xff) { assert((uint8_t)u16 != 0); *out++ = (uint8_t)u16; - } - else if (u16) { + } else { + size_t i; /* normalize only >255 to speed up */ - char buf[6]; - /* ￿ 8 bytes, buffer: 65535\0 6 bytes => max_num = sizeof(buf) + 2 */ - const ssize_t max_num_length = sizeof(buf) + 2; - size_t i = sizeof(buf)-1; - - if(limit <= max_num_length) { + if(limit <= 8) { /* not enough space available */ return NULL; } /* inline version of - * out += snprintf(out, max_num_length, "&#%d;", u16) */ - buf[i] = '\0'; - while(u16 && i > 0 ) { - buf[--i] = '0' + (u16 % 10); - u16 /= 10; + * out += snprintf(out, max_num_length, "&#x%x;", u16) */ + out[0] = '&'; + out[1] = '#'; + out[2] = 'x'; + out[7] = ';'; + for(i=6; i >= 3; --i) { + out[i] = tohex[u16 & 0xf]; + u16 >>= 4; } - - *out++ = '&'; - *out++ = '#'; - while(buf[i]) *out++ = buf[i++]; - *out++ = ';'; + out += 8; } return out; } diff --git a/libclamav/entitylist.h b/libclamav/entitylist.h index 38bad14b4..64c012f94 100644 --- a/libclamav/entitylist.h +++ b/libclamav/entitylist.h @@ -1,1549 +1,1549 @@ /* TODO: include GPL headers */ #include static struct element entities_htable_elements[] = { - {"ssmile", 8995}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"phi", 966}, - {NULL, 0}, - {"cire", 8791}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"lang", 9001}, - {"sbsol", 65128}, - {"tshcy", 1115}, - {NULL, 0}, - {"ast", 42}, - {"dzcy", 1119}, - {"rang", 9002}, - {"boxhu", 9524}, - {"zwnj", 8204}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxUR", 9562}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"block", 9608}, - {"Ccedil", 199}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"chcy", 1095}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"DJcy", 1026}, - {NULL, 0}, - {NULL, 0}, - {"spades", 9824}, - {"GJcy", 1027}, - {"khcy", 1093}, - {"ang", 8736}, - {"KJcy", 1036}, - {"LJcy", 1033}, - {"ETH", 208}, - {"NJcy", 1034}, - {"tilde", 732}, - {"bsol", 92}, - {"shcy", 1096}, - {NULL, 0}, - {"frac58", 8541}, - {NULL, 0}, - {NULL, 0}, - {"micro", 181}, - {"num", 35}, - {"zhcy", 1078}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"ccedil", 231}, - {"osol", 8856}, - {NULL, 0}, - {"sum", 8721}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"emsp13", 8196}, - {"divonx", 8903}, - {NULL, 0}, - {"supe", 8839}, - {NULL, 0}, - {NULL, 0}, - {"sim", 8764}, - {"minus", 8722}, - {"Agr", 913}, - {"Bgr", 914}, - {NULL, 0}, - {"Dgr", 916}, - {"Egr", 917}, - {NULL, 0}, - {"Ggr", 915}, - {NULL, 0}, - {"Igr", 921}, - {"comma", 44}, - {"Kgr", 922}, - {"Lgr", 923}, - {"Mgr", 924}, - {"Ngr", 925}, - {"Ogr", 927}, - {"Pgr", 928}, - {NULL, 0}, - {"Rgr", 929}, - {"Sgr", 931}, - {"pound", 163}, - {"Tgr", 932}, - {"macr", 175}, - {"ell", 8467}, - {"Ugr", 933}, - {"boxDR", 9556}, - {"Zgr", 918}, - {"boxhD", 9573}, - {NULL, 0}, - {NULL, 0}, - {"xdtri", 9661}, - {NULL, 0}, - {"eeacgr", 942}, - {"agr", 945}, - {"ffllig", 64260}, - {"Agrave", 192}, - {"dgr", 948}, - {"bgr", 946}, - {"Egrave", 200}, - {"ggr", 947}, - {"egr", 949}, - {"igr", 953}, - {"Igrave", 204}, - {"kgr", 954}, - {"lgr", 955}, - {"mgr", 956}, - {"ngr", 957}, - {"frac35", 8535}, - {"Ograve", 210}, - {"pgr", 960}, - {"rgr", 961}, - {"sgr", 963}, - {"rcub", 125}, - {"hamilt", 8459}, - {"epsi", 1013}, - {"par", 8741}, - {"ugr", 965}, - {"frac16", 8537}, - {"sqcup", 8852}, - {"Upsi", 978}, - {"caron", 711}, - {"lcub", 123}, - {"ogr", 959}, - {NULL, 0}, - {"Ugrave", 217}, - {NULL, 0}, - {"agrave", 224}, - {"tgr", 964}, - {"sup1", 185}, - {"Xgr", 926}, - {"egrave", 232}, - {"upsi", 965}, - {"real", 8476}, - {"zgr", 950}, - {"igrave", 236}, - {NULL, 0}, - {"thkap", 8776}, - {"lpargt", 10656}, - {NULL, 0}, - {NULL, 0}, - {"ograve", 242}, - {NULL, 0}, - {"boxV", 9553}, - {"rpargt", 10644}, - {"xgr", 958}, - {NULL, 0}, - {"ugrave", 249}, - {"Vvdash", 8874}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Cap", 8914}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Prime", 8243}, - {"boxHd", 9572}, - {NULL, 0}, - {NULL, 0}, - {"khgr", 967}, - {"acute", 180}, - {NULL, 0}, - {NULL, 0}, - {"ohgr", 969}, - {"phgr", 966}, - {"amp", 38}, - {"Gg", 8921}, - {NULL, 0}, - {"coprod", 8720}, - {"thgr", 952}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Epsilon", 917}, - {NULL, 0}, - {NULL, 0}, - {"amalg", 10815}, - {"boxVR", 9568}, - {"euro", 8364}, - {NULL, 0}, - {"cap", 8745}, - {NULL, 0}, - {NULL, 0}, - {"frac12", 189}, - {"gap", 10886}, - {NULL, 0}, - {"prime", 8242}, - {NULL, 0}, - {"angsph", 8738}, - {"lap", 10885}, - {"Upsilon", 933}, - {"HARDcy", 1066}, - {"caret", 8257}, - {NULL, 0}, - {"boxvH", 9578}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"ang90", 8735}, - {NULL, 0}, - {"lg", 8822}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"epsilon", 949}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"eDot", 8785}, - {"darr", 8595}, - {"cent", 162}, - {NULL, 0}, - {"szlig", 223}, - {"harr", 8596}, - {"upsilon", 965}, - {NULL, 0}, - {NULL, 0}, - {"larr", 8592}, - {NULL, 0}, - {"squ", 9633}, - {NULL, 0}, - {"percnt", 37}, - {NULL, 0}, - {"rarr", 8594}, - {NULL, 0}, - {NULL, 0}, - {"uarr", 8593}, - {NULL, 0}, - {"Eta", 919}, - {"boxh", 9472}, - {"flat", 9837}, - {"bdquo", 8222}, - {NULL, 0}, - {NULL, 0}, - {"alefsym", 8501}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"gimel", 8503}, - {"ldquo", 8220}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"upsih", 978}, - {"rdquo", 8221}, - {NULL, 0}, - {NULL, 0}, - {"thksim", 8764}, - {NULL, 0}, - {"phis", 981}, - {"telrec", 8981}, - {"thetav", 977}, - {NULL, 0}, - {NULL, 0}, - {"int", 8747}, - {"boxVh", 9579}, - {NULL, 0}, - {"thorn", 254}, - {"excl", 33}, - {"iocy", 1105}, - {"eta", 951}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"loz", 9674}, - {NULL, 0}, - {NULL, 0}, - {"smile", 8995}, - {"yucy", 1102}, - {NULL, 0}, - {"epsis", 1013}, - {"natur", 9838}, - {"sup2", 178}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"IEcy", 1045}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"yicy", 1111}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"bowtie", 8904}, - {"daleth", 8504}, - {NULL, 0}, - {"boxul", 9496}, - {"sqsube", 8849}, - {"bprime", 8245}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Sigma", 931}, - {"para", 182}, - {"timesb", 8864}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"ges", 10878}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"plusdo", 8724}, - {"les", 10877}, - {"tprime", 8244}, - {"vprime", 8242}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"scap", 10936}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"ecir", 8790}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"sigma", 963}, - {"lEg", 10891}, - {"iff", 8660}, - {"frac23", 8532}, - {NULL, 0}, - {"ocir", 8858}, - {"trie", 8796}, - {NULL, 0}, - {NULL, 0}, - {"Omega", 937}, - {NULL, 0}, - {"numsp", 8199}, - {NULL, 0}, - {"uml", 168}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"lhblk", 9604}, - {NULL, 0}, - {"OHacgr", 911}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"uhblk", 9600}, - {NULL, 0}, - {"lthree", 8907}, - {"blk14", 9617}, - {NULL, 0}, - {NULL, 0}, - {"oline", 8254}, - {NULL, 0}, - {"die", 168}, - {"boxdl", 9488}, - {"thetasym", 977}, - {"rthree", 8908}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"colone", 8788}, - {"omega", 969}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"ltrie", 8884}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"breve", 728}, - {"oplus", 8853}, - {"rtrie", 8885}, - {"wreath", 8768}, - {NULL, 0}, - {"sce", 10928}, - {"uplus", 8846}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"star", 9734}, - {"dtri", 9663}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Gt", 8811}, - {"hardcy", 1098}, - {NULL, 0}, - {"ogon", 731}, - {"ltri", 9667}, - {"Lt", 8810}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"rtri", 9657}, - {"Lambda", 923}, - {"EEgr", 919}, - {"utri", 9653}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"bsime", 8909}, - {"boxhU", 9576}, - {"epsiv", 949}, - {"hearts", 9829}, - {"sharp", 9839}, - {NULL, 0}, - {"quot", 34}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"smid", 8739}, - {"gt", 62}, - {NULL, 0}, - {"frac38", 8540}, - {NULL, 0}, - {"lt", 60}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"exist", 8707}, - {"lambda", 955}, - {"piv", 982}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"bsim", 8765}, - {NULL, 0}, - {"sup3", 179}, - {NULL, 0}, - {NULL, 0}, - {"gsim", 8819}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"lsim", 8818}, - {NULL, 0}, - {"sstarf", 8902}, - {"ominus", 8854}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxvl", 9508}, - {"trade", 8482}, - {NULL, 0}, - {"vprop", 8733}, - {"bcong", 8780}, - {"hybull", 8259}, - {NULL, 0}, - {"cong", 8773}, - {NULL, 0}, - {"Dot", 168}, - {NULL, 0}, - {NULL, 0}, - {"filig", 64257}, - {"sung", 9834}, - {"THORN", 222}, - {NULL, 0}, - {NULL, 0}, - {"AElig", 198}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"copy", 169}, - {"sqsupe", 8850}, - {"prop", 8733}, - {NULL, 0}, - {"prsim", 8830}, - {"apos", 39}, - {"ring", 730}, - {NULL, 0}, - {"boxHu", 9575}, - {NULL, 0}, - {"frac34", 190}, - {"OElig", 338}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"drcrop", 8972}, - {"erDot", 8787}, - {NULL, 0}, - {NULL, 0}, - {"dot", 729}, - {"frac15", 8533}, - {NULL, 0}, - {"dlcrop", 8973}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Oslash", 216}, - {"efDot", 8786}, - {"djcy", 1106}, - {"not", 172}, - {"urcrop", 8974}, - {"gjcy", 1107}, - {"sdotb", 8865}, - {NULL, 0}, - {NULL, 0}, - {"kjcy", 1116}, - {"ljcy", 1113}, - {"ulcrop", 8975}, - {"njcy", 1114}, - {NULL, 0}, - {"mldr", 8230}, - {"nldr", 8229}, - {NULL, 0}, - {NULL, 0}, - {"rhov", 1009}, - {NULL, 0}, - {"ecolon", 8789}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"hyphen", 8208}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"oslash", 248}, - {"supE", 10950}, - {NULL, 0}, - {NULL, 0}, - {"grave", 96}, - {"els", 10901}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"vrtri", 8883}, - {NULL, 0}, - {"Alpha", 913}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"period", 46}, - {"vltri", 8882}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"emsp", 8195}, - {NULL, 0}, - {NULL, 0}, - {"part", 8706}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxHD", 9574}, - {"Auml", 196}, - {NULL, 0}, - {NULL, 0}, - {"Euml", 203}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Iuml", 207}, - {"boxur", 9492}, - {"alpha", 945}, - {NULL, 0}, - {"cir", 9675}, - {"equiv", 8801}, - {"Ouml", 214}, - {"plusb", 8862}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"frown", 8994}, - {"Uuml", 220}, - {NULL, 0}, - {NULL, 0}, - {"Yuml", 376}, - {"Omicron", 927}, - {NULL, 0}, - {"ape", 8778}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"auml", 228}, - {NULL, 0}, - {NULL, 0}, - {"Scaron", 352}, - {"euml", 235}, - {NULL, 0}, - {NULL, 0}, - {"nabla", 8711}, - {"iuml", 239}, - {NULL, 0}, - {"sube", 8838}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"ouml", 246}, - {NULL, 0}, - {"isin", 8712}, - {"Cup", 8915}, - {"phone", 9742}, - {NULL, 0}, - {"semi", 59}, - {"uuml", 252}, - {NULL, 0}, - {NULL, 0}, - {"yuml", 255}, - {"omicron", 959}, - {"bepsi", 1014}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Sup", 8913}, - {NULL, 0}, - {"scaron", 353}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"frac45", 8536}, - {NULL, 0}, - {"Mu", 924}, - {"Nu", 925}, - {NULL, 0}, - {"numero", 8470}, - {"cup", 8746}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxdr", 9484}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Iota", 921}, - {"Acirc", 194}, - {NULL, 0}, - {"Pi", 928}, - {NULL, 0}, - {"Ecirc", 202}, - {"sup", 8835}, - {NULL, 0}, - {NULL, 0}, - {"Icirc", 206}, - {"idiagr", 912}, - {"horbar", 8213}, - {"Xi", 926}, - {"top", 8868}, - {NULL, 0}, - {"Ocirc", 212}, - {NULL, 0}, - {"boxVH", 9580}, - {"mu", 956}, - {"nu", 957}, - {NULL, 0}, - {"ldot", 8918}, - {"odot", 8857}, - {"udiagr", 944}, - {"Ucirc", 219}, - {"sdot", 8901}, - {"ldquor", 8222}, - {"tdot", 8411}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"iota", 953}, - {"ni", 8715}, - {"acirc", 226}, - {"pi", 960}, - {"setmn", 8726}, - {"ecirc", 234}, - {"dash", 8208}, - {"blk34", 9619}, - {"Kappa", 922}, - {"icirc", 238}, - {"rdquor", 8221}, - {"ssetmn", 8726}, - {"xi", 958}, - {"sc", 8827}, - {"iexcl", 161}, - {"ocirc", 244}, - {"Tau", 932}, - {"boxuL", 9563}, - {"wedgeq", 8793}, - {NULL, 0}, - {"sigmav", 962}, - {"ucirc", 251}, - {NULL, 0}, - {NULL, 0}, - {"xcirc", 9711}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxH", 9552}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"eth", 240}, - {"gE", 8807}, - {NULL, 0}, - {NULL, 0}, - {"kappa", 954}, - {"ltimes", 8905}, - {"lE", 8806}, - {NULL, 0}, - {"otimes", 8855}, - {NULL, 0}, - {NULL, 0}, - {"rtimes", 8906}, - {"tau", 964}, - {NULL, 0}, - {"vDash", 8872}, - {"cupre", 8828}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Aacgr", 902}, - {"minusb", 8863}, - {"DScy", 1029}, - {"nexist", 8708}, - {"blk12", 9618}, - {"Eacgr", 904}, - {"sqsub", 8847}, - {"plus", 43}, - {"Iacgr", 906}, - {"bernou", 8492}, - {"boxvr", 9500}, - {NULL, 0}, - {"phiv", 966}, - {NULL, 0}, - {"Oacgr", 908}, - {"fnof", 402}, - {NULL, 0}, - {"iecy", 1077}, - {"TScy", 1062}, - {NULL, 0}, - {"Uacgr", 910}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxUl", 9564}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"deg", 176}, - {"boxdL", 9557}, - {"lrm", 8206}, - {"TSHcy", 1035}, - {"aacgr", 940}, - {"eacgr", 941}, - {NULL, 0}, - {"Aacute", 193}, - {"leg", 8922}, - {"iacgr", 943}, - {"thinsp", 8201}, - {"Eacute", 201}, - {"YAcy", 1071}, - {NULL, 0}, - {"rlm", 8207}, - {"Iacute", 205}, - {"oacgr", 972}, - {"reg", 174}, - {"egs", 10902}, - {"DotDot", 8412}, - {NULL, 0}, - {"Oacute", 211}, - {"frac56", 8538}, - {"malt", 10016}, - {"uacgr", 973}, - {NULL, 0}, - {NULL, 0}, - {"Uacute", 218}, - {NULL, 0}, - {"ensp", 8194}, - {NULL, 0}, - {"Yacute", 221}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"samalg", 8720}, - {"shy", 173}, - {NULL, 0}, - {"aacute", 225}, - {"permil", 8240}, - {"mnplus", 8723}, - {"hellip", 8230}, - {"eacute", 233}, - {"frac18", 8539}, - {"sfrown", 8994}, - {NULL, 0}, - {"iacute", 237}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"nbsp", 160}, - {"sol", 47}, - {"oacute", 243}, - {"compfn", 8728}, - {"colon", 58}, - {NULL, 0}, - {"ohacgr", 974}, - {"uacute", 250}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"vellip", 8942}, - {"yacute", 253}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxDl", 9558}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"angmsd", 8737}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"frasl", 8260}, - {"gEl", 10892}, - {NULL, 0}, - {"perp", 8869}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxvL", 9569}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"lpar", 40}, - {NULL, 0}, - {NULL, 0}, - {"frac14", 188}, - {NULL, 0}, - {"conint", 8750}, - {"rpar", 41}, - {"spar", 8741}, - {"order", 8500}, - {"there4", 8756}, - {NULL, 0}, - {"and", 8743}, - {NULL, 0}, - {NULL, 0}, - {"PSgr", 936}, - {"eegr", 951}, - {"beth", 8502}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"drcorn", 8991}, - {NULL, 0}, - {NULL, 0}, - {"boxHU", 9577}, - {NULL, 0}, - {NULL, 0}, - {"starf", 9733}, - {"dlcorn", 8990}, - {"check", 10003}, - {NULL, 0}, - {"SOFTcy", 1068}, - {NULL, 0}, - {NULL, 0}, - {"dtrif", 9662}, - {"iquest", 191}, - {"ltrif", 9666}, - {NULL, 0}, - {"ap", 8776}, - {"urcorn", 8989}, - {NULL, 0}, - {NULL, 0}, - {"rtrif", 9656}, - {NULL, 0}, - {NULL, 0}, - {"sime", 8771}, - {"ulcorn", 8988}, - {"Barwed", 8966}, - {"utrif", 9652}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"marker", 9646}, - {NULL, 0}, - {"Atilde", 195}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"divide", 247}, - {"weierp", 8472}, - {NULL, 0}, - {"sqsup", 8848}, - {NULL, 0}, - {NULL, 0}, - {"boxVl", 9570}, - {"esdot", 8784}, - {"Ntilde", 209}, - {"gsdot", 8919}, - {"becaus", 8757}, - {"Otilde", 213}, - {"ffilig", 64259}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"blank", 9251}, - {"barwed", 8965}, - {"sigmaf", 962}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"aelig", 230}, - {NULL, 0}, - {"atilde", 227}, - {"lsquo", 8216}, - {NULL, 0}, - {"veebar", 8891}, - {"target", 8982}, - {NULL, 0}, - {"rsquo", 8217}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"SHCHcy", 1065}, - {NULL, 0}, - {"oelig", 339}, - {"ntilde", 241}, - {"otilde", 245}, - {NULL, 0}, - {"clubs", 9827}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"crarr", 8629}, - {"fork", 8916}, - {"laquo", 171}, - {"notin", 8713}, - {NULL, 0}, - {NULL, 0}, - {"DZcy", 1039}, - {"raquo", 187}, - {"aleph", 8501}, - {NULL, 0}, - {"phmmat", 8499}, - {"middot", 183}, - {"gammad", 989}, - {NULL, 0}, - {NULL, 0}, - {"boxuR", 9560}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"cuesc", 8927}, - {NULL, 0}, - {"dashv", 8867}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"CHcy", 1063}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"angst", 8491}, - {NULL, 0}, - {"KHcy", 1061}, - {"incare", 8453}, - {"Acy", 1040}, - {"Bcy", 1041}, - {NULL, 0}, - {"Jsercy", 1032}, - {"Dcy", 1044}, - {"Ecy", 1069}, - {"SHcy", 1064}, - {"Gcy", 1043}, - {"Fcy", 1060}, - {"Icy", 1048}, - {"Kcy", 1050}, - {"Lcy", 1051}, - {"Jcy", 1049}, - {"Delta", 916}, - {"Ocy", 1054}, - {"cedil", 184}, - {"Pcy", 1055}, - {"Rcy", 1056}, - {"Mcy", 1052}, - {"prap", 10935}, - {"Tcy", 1058}, - {"Scy", 1057}, - {"inodot", 305}, - {"jnodot", 106}, - {"frac25", 8534}, - {"Ycy", 1067}, - {"Gamma", 915}, - {"Vcy", 1042}, - {"Ncy", 1053}, - {NULL, 0}, - {"square", 9633}, - {"Zcy", 1047}, - {"acy", 1072}, - {"bcy", 1073}, - {"ZHcy", 1046}, - {"jsercy", 1112}, - {"dcy", 1076}, - {"fcy", 1092}, - {"gcy", 1075}, - {"ecy", 1101}, - {"icy", 1080}, - {"jcy", 1081}, - {"kcy", 1082}, - {"lcy", 1083}, - {"mcy", 1084}, - {"ncy", 1085}, - {"ocy", 1086}, - {"pcy", 1087}, - {"Iukcy", 1030}, - {"rcy", 1088}, - {"scy", 1089}, - {"nsub", 8836}, - {"boxUr", 9561}, - {"ucy", 1091}, - {"sccue", 8829}, - {"Jukcy", 1028}, - {"boxdR", 9554}, - {"tcy", 1090}, - {"empty", 8709}, - {"female", 9792}, - {"delta", 948}, - {"gamma", 947}, - {"ycy", 1099}, - {"twixt", 8812}, - {NULL, 0}, - {"EEacgr", 905}, - {NULL, 0}, - {"zcy", 1079}, - {"copysr", 8471}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"times", 215}, - {NULL, 0}, - {"vcy", 1074}, - {"Ucy", 1059}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"iukcy", 1110}, - {"subE", 10949}, - {"jukcy", 1108}, - {NULL, 0}, - {"lfloor", 8970}, - {NULL, 0}, - {NULL, 0}, - {"rfloor", 8971}, - {"pre", 10927}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"radic", 8730}, - {"kappav", 1008}, - {NULL, 0}, - {"circ", 710}, - {NULL, 0}, - {NULL, 0}, - {"frac78", 8542}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"softcy", 1100}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"dollar", 36}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxv", 9474}, - {NULL, 0}, - {NULL, 0}, - {"plusmn", 177}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"cross", 10007}, - {NULL, 0}, - {NULL, 0}, - {"boxDr", 9555}, - {NULL, 0}, - {"dblac", 733}, - {"sqcap", 8851}, - {NULL, 0}, - {"boxhd", 9516}, - {"ordm", 186}, - {"lowast", 8727}, - {"KHgr", 935}, - {"mid", 8739}, - {NULL, 0}, - {"emsp14", 8197}, - {"OHgr", 937}, - {"PHgr", 934}, - {"sfgr", 962}, - {NULL, 0}, - {"Verbar", 8214}, - {"Beta", 914}, - {"Psi", 936}, - {NULL, 0}, - {"THgr", 920}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"curren", 164}, - {"puncsp", 8200}, - {NULL, 0}, - {"Vdash", 8873}, - {"boxvR", 9566}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Rho", 929}, - {"shchcy", 1097}, - {"ge", 8805}, - {"Zeta", 918}, - {NULL, 0}, - {NULL, 0}, - {"mdash", 8212}, - {"ndash", 8211}, - {"odash", 8861}, - {"beta", 946}, - {"le", 8804}, - {"Sub", 8912}, - {"lagran", 8466}, - {"verbar", 124}, - {"boxUL", 9565}, - {"ne", 8800}, - {"vdash", 8866}, - {NULL, 0}, - {NULL, 0}, - {"psi", 968}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"fllig", 64258}, - {NULL, 0}, - {NULL, 0}, - {"image", 8465}, - {"oS", 9416}, - {"rho", 961}, - {"hairsp", 8202}, - {"fflig", 64256}, - {"lowbar", 95}, - {"male", 9794}, - {NULL, 0}, - {"zeta", 950}, - {NULL, 0}, - {NULL, 0}, - {"commat", 64}, - {NULL, 0}, - {"cuepr", 8926}, - {"sub", 8834}, - {NULL, 0}, - {"lsqb", 91}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"rsqb", 93}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"dArr", 8659}, - {"boxVr", 9567}, - {"sbquo", 8218}, - {"dscy", 1109}, - {"hArr", 8660}, - {"brvbar", 166}, - {"scsim", 8831}, - {NULL, 0}, - {"lArr", 8656}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"rArr", 8658}, - {"lceil", 8968}, - {"boxvh", 9532}, - {"cuvee", 8910}, - {"IOcy", 1025}, - {"tscy", 1094}, - {"Idigr", 938}, - {"rceil", 8969}, - {"bumpe", 8783}, - {"planck", 8463}, - {NULL, 0}, - {"squf", 9642}, - {"yen", 165}, - {"uArr", 8657}, - {"YUcy", 1070}, - {"oast", 8859}, - {"equals", 61}, - {"diam", 8900}, - {"Udigr", 939}, - {"boxDL", 9559}, - {NULL, 0}, - {"frac13", 8531}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"YIcy", 1031}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"yacy", 1103}, - {NULL, 0}, - {NULL, 0}, - {"bump", 8782}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"idigr", 970}, - {"xutri", 9651}, - {"ohm", 8486}, - {NULL, 0}, - {"comp", 8705}, - {NULL, 0}, - {NULL, 0}, - {"infin", 8734}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"udigr", 971}, - {NULL, 0}, - {"asymp", 8776}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"lozf", 10731}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"sext", 10038}, - {"Ubrcy", 1038}, - {NULL, 0}, - {NULL, 0}, - {"bottom", 8869}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Theta", 920}, - {NULL, 0}, - {"gel", 8923}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"lsaquo", 8249}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"rsaquo", 8250}, - {NULL, 0}, - {NULL, 0}, - {"ubrcy", 1118}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"intcal", 8890}, - {"quest", 63}, - {NULL, 0}, - {NULL, 0}, - {"theta", 952}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"boxVL", 9571}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"forall", 8704}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"half", 189}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"bull", 8226}, - {"psgr", 968}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Dagger", 8225}, - {"Aring", 197}, - {NULL, 0}, - {NULL, 0}, - {"Ll", 8920}, - {"models", 8871}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"zwj", 8205}, - {"prod", 8719}, - {NULL, 0}, - {NULL, 0}, - {"Chi", 935}, - {"rect", 9645}, - {"sect", 167}, - {"lsquor", 8218}, - {NULL, 0}, - {"thetas", 952}, - {"cuwed", 8911}, - {NULL, 0}, - {NULL, 0}, - {"rsquor", 8217}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"Phi", 934}, - {"rx", 8478}, - {NULL, 0}, - {NULL, 0}, - {"gl", 8823}, - {"or", 8744}, - {"pr", 8826}, - {"aring", 229}, - {"dagger", 8224}, - {NULL, 0}, - {NULL, 0}, - {"diams", 9830}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {"chi", 967}, - {NULL, 0}, - {NULL, 0}, - {"ordf", 170}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, - {NULL, 0}, + {"ssmile", 8995, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"phi", 966, 3}, + {NULL,0,0}, + {"cire", 8791, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"lang", 9001, 4}, + {"sbsol", 65128, 5}, + {"tshcy", 1115, 5}, + {NULL,0,0}, + {"ast", 42, 3}, + {"dzcy", 1119, 4}, + {"rang", 9002, 4}, + {"boxhu", 9524, 5}, + {"zwnj", 8204, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxUR", 9562, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"block", 9608, 5}, + {"Ccedil", 199, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"chcy", 1095, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"DJcy", 1026, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"spades", 9824, 6}, + {"GJcy", 1027, 4}, + {"khcy", 1093, 4}, + {"ang", 8736, 3}, + {"KJcy", 1036, 4}, + {"LJcy", 1033, 4}, + {"ETH", 208, 3}, + {"NJcy", 1034, 4}, + {"tilde", 732, 5}, + {"bsol", 92, 4}, + {"shcy", 1096, 4}, + {NULL,0,0}, + {"frac58", 8541, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"micro", 181, 5}, + {"num", 35, 3}, + {"zhcy", 1078, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"ccedil", 231, 6}, + {"osol", 8856, 4}, + {NULL,0,0}, + {"sum", 8721, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"emsp13", 8196, 6}, + {"divonx", 8903, 6}, + {NULL,0,0}, + {"supe", 8839, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"sim", 8764, 3}, + {"minus", 8722, 5}, + {"Agr", 913, 3}, + {"Bgr", 914, 3}, + {NULL,0,0}, + {"Dgr", 916, 3}, + {"Egr", 917, 3}, + {NULL,0,0}, + {"Ggr", 915, 3}, + {NULL,0,0}, + {"Igr", 921, 3}, + {"comma", 44, 5}, + {"Kgr", 922, 3}, + {"Lgr", 923, 3}, + {"Mgr", 924, 3}, + {"Ngr", 925, 3}, + {"Ogr", 927, 3}, + {"Pgr", 928, 3}, + {NULL,0,0}, + {"Rgr", 929, 3}, + {"Sgr", 931, 3}, + {"pound", 163, 5}, + {"Tgr", 932, 3}, + {"macr", 175, 4}, + {"ell", 8467, 3}, + {"Ugr", 933, 3}, + {"boxDR", 9556, 5}, + {"Zgr", 918, 3}, + {"boxhD", 9573, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"xdtri", 9661, 5}, + {NULL,0,0}, + {"eeacgr", 942, 6}, + {"agr", 945, 3}, + {"ffllig", 64260, 6}, + {"Agrave", 192, 6}, + {"dgr", 948, 3}, + {"bgr", 946, 3}, + {"Egrave", 200, 6}, + {"ggr", 947, 3}, + {"egr", 949, 3}, + {"igr", 953, 3}, + {"Igrave", 204, 6}, + {"kgr", 954, 3}, + {"lgr", 955, 3}, + {"mgr", 956, 3}, + {"ngr", 957, 3}, + {"frac35", 8535, 6}, + {"Ograve", 210, 6}, + {"pgr", 960, 3}, + {"rgr", 961, 3}, + {"sgr", 963, 3}, + {"rcub", 125, 4}, + {"hamilt", 8459, 6}, + {"epsi", 1013, 4}, + {"par", 8741, 3}, + {"ugr", 965, 3}, + {"frac16", 8537, 6}, + {"sqcup", 8852, 5}, + {"Upsi", 978, 4}, + {"caron", 711, 5}, + {"lcub", 123, 4}, + {"ogr", 959, 3}, + {NULL,0,0}, + {"Ugrave", 217, 6}, + {NULL,0,0}, + {"agrave", 224, 6}, + {"tgr", 964, 3}, + {"sup1", 185, 4}, + {"Xgr", 926, 3}, + {"egrave", 232, 6}, + {"upsi", 965, 4}, + {"real", 8476, 4}, + {"zgr", 950, 3}, + {"igrave", 236, 6}, + {NULL,0,0}, + {"thkap", 8776, 5}, + {"lpargt", 10656, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"ograve", 242, 6}, + {NULL,0,0}, + {"boxV", 9553, 4}, + {"rpargt", 10644, 6}, + {"xgr", 958, 3}, + {NULL,0,0}, + {"ugrave", 249, 6}, + {"Vvdash", 8874, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Cap", 8914, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Prime", 8243, 5}, + {"boxHd", 9572, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"khgr", 967, 4}, + {"acute", 180, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"ohgr", 969, 4}, + {"phgr", 966, 4}, + {"amp", 38, 3}, + {"Gg", 8921, 2}, + {NULL,0,0}, + {"coprod", 8720, 6}, + {"thgr", 952, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Epsilon", 917, 7}, + {NULL,0,0}, + {NULL,0,0}, + {"amalg", 10815, 5}, + {"boxVR", 9568, 5}, + {"euro", 8364, 4}, + {NULL,0,0}, + {"cap", 8745, 3}, + {NULL,0,0}, + {NULL,0,0}, + {"frac12", 189, 6}, + {"gap", 10886, 3}, + {NULL,0,0}, + {"prime", 8242, 5}, + {NULL,0,0}, + {"angsph", 8738, 6}, + {"lap", 10885, 3}, + {"Upsilon", 933, 7}, + {"HARDcy", 1066, 6}, + {"caret", 8257, 5}, + {NULL,0,0}, + {"boxvH", 9578, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"ang90", 8735, 5}, + {NULL,0,0}, + {"lg", 8822, 2}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"epsilon", 949, 7}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"eDot", 8785, 4}, + {"darr", 8595, 4}, + {"cent", 162, 4}, + {NULL,0,0}, + {"szlig", 223, 5}, + {"harr", 8596, 4}, + {"upsilon", 965, 7}, + {NULL,0,0}, + {NULL,0,0}, + {"larr", 8592, 4}, + {NULL,0,0}, + {"squ", 9633, 3}, + {NULL,0,0}, + {"percnt", 37, 6}, + {NULL,0,0}, + {"rarr", 8594, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"uarr", 8593, 4}, + {NULL,0,0}, + {"Eta", 919, 3}, + {"boxh", 9472, 4}, + {"flat", 9837, 4}, + {"bdquo", 8222, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"alefsym", 8501, 7}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"gimel", 8503, 5}, + {"ldquo", 8220, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"upsih", 978, 5}, + {"rdquo", 8221, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"thksim", 8764, 6}, + {NULL,0,0}, + {"phis", 981, 4}, + {"telrec", 8981, 6}, + {"thetav", 977, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"int", 8747, 3}, + {"boxVh", 9579, 5}, + {NULL,0,0}, + {"thorn", 254, 5}, + {"excl", 33, 4}, + {"iocy", 1105, 4}, + {"eta", 951, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"loz", 9674, 3}, + {NULL,0,0}, + {NULL,0,0}, + {"smile", 8995, 5}, + {"yucy", 1102, 4}, + {NULL,0,0}, + {"epsis", 1013, 5}, + {"natur", 9838, 5}, + {"sup2", 178, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"IEcy", 1045, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"yicy", 1111, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"bowtie", 8904, 6}, + {"daleth", 8504, 6}, + {NULL,0,0}, + {"boxul", 9496, 5}, + {"sqsube", 8849, 6}, + {"bprime", 8245, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Sigma", 931, 5}, + {"para", 182, 4}, + {"timesb", 8864, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"ges", 10878, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"plusdo", 8724, 6}, + {"les", 10877, 3}, + {"tprime", 8244, 6}, + {"vprime", 8242, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"scap", 10936, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"ecir", 8790, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"sigma", 963, 5}, + {"lEg", 10891, 3}, + {"iff", 8660, 3}, + {"frac23", 8532, 6}, + {NULL,0,0}, + {"ocir", 8858, 4}, + {"trie", 8796, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"Omega", 937, 5}, + {NULL,0,0}, + {"numsp", 8199, 5}, + {NULL,0,0}, + {"uml", 168, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"lhblk", 9604, 5}, + {NULL,0,0}, + {"OHacgr", 911, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"uhblk", 9600, 5}, + {NULL,0,0}, + {"lthree", 8907, 6}, + {"blk14", 9617, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"oline", 8254, 5}, + {NULL,0,0}, + {"die", 168, 3}, + {"boxdl", 9488, 5}, + {"thetasym", 977, 8}, + {"rthree", 8908, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"colone", 8788, 6}, + {"omega", 969, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"ltrie", 8884, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"breve", 728, 5}, + {"oplus", 8853, 5}, + {"rtrie", 8885, 5}, + {"wreath", 8768, 6}, + {NULL,0,0}, + {"sce", 10928, 3}, + {"uplus", 8846, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"star", 9734, 4}, + {"dtri", 9663, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Gt", 8811, 2}, + {"hardcy", 1098, 6}, + {NULL,0,0}, + {"ogon", 731, 4}, + {"ltri", 9667, 4}, + {"Lt", 8810, 2}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"rtri", 9657, 4}, + {"Lambda", 923, 6}, + {"EEgr", 919, 4}, + {"utri", 9653, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"bsime", 8909, 5}, + {"boxhU", 9576, 5}, + {"epsiv", 949, 5}, + {"hearts", 9829, 6}, + {"sharp", 9839, 5}, + {NULL,0,0}, + {"quot", 34, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"smid", 8739, 4}, + {"gt", 62, 2}, + {NULL,0,0}, + {"frac38", 8540, 6}, + {NULL,0,0}, + {"lt", 60, 2}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"exist", 8707, 5}, + {"lambda", 955, 6}, + {"piv", 982, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"bsim", 8765, 4}, + {NULL,0,0}, + {"sup3", 179, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"gsim", 8819, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"lsim", 8818, 4}, + {NULL,0,0}, + {"sstarf", 8902, 6}, + {"ominus", 8854, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxvl", 9508, 5}, + {"trade", 8482, 5}, + {NULL,0,0}, + {"vprop", 8733, 5}, + {"bcong", 8780, 5}, + {"hybull", 8259, 6}, + {NULL,0,0}, + {"cong", 8773, 4}, + {NULL,0,0}, + {"Dot", 168, 3}, + {NULL,0,0}, + {NULL,0,0}, + {"filig", 64257, 5}, + {"sung", 9834, 4}, + {"THORN", 222, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"AElig", 198, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"copy", 169, 4}, + {"sqsupe", 8850, 6}, + {"prop", 8733, 4}, + {NULL,0,0}, + {"prsim", 8830, 5}, + {"apos", 39, 4}, + {"ring", 730, 4}, + {NULL,0,0}, + {"boxHu", 9575, 5}, + {NULL,0,0}, + {"frac34", 190, 6}, + {"OElig", 338, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"drcrop", 8972, 6}, + {"erDot", 8787, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"dot", 729, 3}, + {"frac15", 8533, 6}, + {NULL,0,0}, + {"dlcrop", 8973, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Oslash", 216, 6}, + {"efDot", 8786, 5}, + {"djcy", 1106, 4}, + {"not", 172, 3}, + {"urcrop", 8974, 6}, + {"gjcy", 1107, 4}, + {"sdotb", 8865, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"kjcy", 1116, 4}, + {"ljcy", 1113, 4}, + {"ulcrop", 8975, 6}, + {"njcy", 1114, 4}, + {NULL,0,0}, + {"mldr", 8230, 4}, + {"nldr", 8229, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"rhov", 1009, 4}, + {NULL,0,0}, + {"ecolon", 8789, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"hyphen", 8208, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"oslash", 248, 6}, + {"supE", 10950, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"grave", 96, 5}, + {"els", 10901, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"vrtri", 8883, 5}, + {NULL,0,0}, + {"Alpha", 913, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"period", 46, 6}, + {"vltri", 8882, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"emsp", 8195, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"part", 8706, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxHD", 9574, 5}, + {"Auml", 196, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"Euml", 203, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Iuml", 207, 4}, + {"boxur", 9492, 5}, + {"alpha", 945, 5}, + {NULL,0,0}, + {"cir", 9675, 3}, + {"equiv", 8801, 5}, + {"Ouml", 214, 4}, + {"plusb", 8862, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"frown", 8994, 5}, + {"Uuml", 220, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"Yuml", 376, 4}, + {"Omicron", 927, 7}, + {NULL,0,0}, + {"ape", 8778, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"auml", 228, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"Scaron", 352, 6}, + {"euml", 235, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"nabla", 8711, 5}, + {"iuml", 239, 4}, + {NULL,0,0}, + {"sube", 8838, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"ouml", 246, 4}, + {NULL,0,0}, + {"isin", 8712, 4}, + {"Cup", 8915, 3}, + {"phone", 9742, 5}, + {NULL,0,0}, + {"semi", 59, 4}, + {"uuml", 252, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"yuml", 255, 4}, + {"omicron", 959, 7}, + {"bepsi", 1014, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Sup", 8913, 3}, + {NULL,0,0}, + {"scaron", 353, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"frac45", 8536, 6}, + {NULL,0,0}, + {"Mu", 924, 2}, + {"Nu", 925, 2}, + {NULL,0,0}, + {"numero", 8470, 6}, + {"cup", 8746, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxdr", 9484, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Iota", 921, 4}, + {"Acirc", 194, 5}, + {NULL,0,0}, + {"Pi", 928, 2}, + {NULL,0,0}, + {"Ecirc", 202, 5}, + {"sup", 8835, 3}, + {NULL,0,0}, + {NULL,0,0}, + {"Icirc", 206, 5}, + {"idiagr", 912, 6}, + {"horbar", 8213, 6}, + {"Xi", 926, 2}, + {"top", 8868, 3}, + {NULL,0,0}, + {"Ocirc", 212, 5}, + {NULL,0,0}, + {"boxVH", 9580, 5}, + {"mu", 956, 2}, + {"nu", 957, 2}, + {NULL,0,0}, + {"ldot", 8918, 4}, + {"odot", 8857, 4}, + {"udiagr", 944, 6}, + {"Ucirc", 219, 5}, + {"sdot", 8901, 4}, + {"ldquor", 8222, 6}, + {"tdot", 8411, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"iota", 953, 4}, + {"ni", 8715, 2}, + {"acirc", 226, 5}, + {"pi", 960, 2}, + {"setmn", 8726, 5}, + {"ecirc", 234, 5}, + {"dash", 8208, 4}, + {"blk34", 9619, 5}, + {"Kappa", 922, 5}, + {"icirc", 238, 5}, + {"rdquor", 8221, 6}, + {"ssetmn", 8726, 6}, + {"xi", 958, 2}, + {"sc", 8827, 2}, + {"iexcl", 161, 5}, + {"ocirc", 244, 5}, + {"Tau", 932, 3}, + {"boxuL", 9563, 5}, + {"wedgeq", 8793, 6}, + {NULL,0,0}, + {"sigmav", 962, 6}, + {"ucirc", 251, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"xcirc", 9711, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxH", 9552, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"eth", 240, 3}, + {"gE", 8807, 2}, + {NULL,0,0}, + {NULL,0,0}, + {"kappa", 954, 5}, + {"ltimes", 8905, 6}, + {"lE", 8806, 2}, + {NULL,0,0}, + {"otimes", 8855, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"rtimes", 8906, 6}, + {"tau", 964, 3}, + {NULL,0,0}, + {"vDash", 8872, 5}, + {"cupre", 8828, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Aacgr", 902, 5}, + {"minusb", 8863, 6}, + {"DScy", 1029, 4}, + {"nexist", 8708, 6}, + {"blk12", 9618, 5}, + {"Eacgr", 904, 5}, + {"sqsub", 8847, 5}, + {"plus", 43, 4}, + {"Iacgr", 906, 5}, + {"bernou", 8492, 6}, + {"boxvr", 9500, 5}, + {NULL,0,0}, + {"phiv", 966, 4}, + {NULL,0,0}, + {"Oacgr", 908, 5}, + {"fnof", 402, 4}, + {NULL,0,0}, + {"iecy", 1077, 4}, + {"TScy", 1062, 4}, + {NULL,0,0}, + {"Uacgr", 910, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxUl", 9564, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"deg", 176, 3}, + {"boxdL", 9557, 5}, + {"lrm", 8206, 3}, + {"TSHcy", 1035, 5}, + {"aacgr", 940, 5}, + {"eacgr", 941, 5}, + {NULL,0,0}, + {"Aacute", 193, 6}, + {"leg", 8922, 3}, + {"iacgr", 943, 5}, + {"thinsp", 8201, 6}, + {"Eacute", 201, 6}, + {"YAcy", 1071, 4}, + {NULL,0,0}, + {"rlm", 8207, 3}, + {"Iacute", 205, 6}, + {"oacgr", 972, 5}, + {"reg", 174, 3}, + {"egs", 10902, 3}, + {"DotDot", 8412, 6}, + {NULL,0,0}, + {"Oacute", 211, 6}, + {"frac56", 8538, 6}, + {"malt", 10016, 4}, + {"uacgr", 973, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"Uacute", 218, 6}, + {NULL,0,0}, + {"ensp", 8194, 4}, + {NULL,0,0}, + {"Yacute", 221, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"samalg", 8720, 6}, + {"shy", 173, 3}, + {NULL,0,0}, + {"aacute", 225, 6}, + {"permil", 8240, 6}, + {"mnplus", 8723, 6}, + {"hellip", 8230, 6}, + {"eacute", 233, 6}, + {"frac18", 8539, 6}, + {"sfrown", 8994, 6}, + {NULL,0,0}, + {"iacute", 237, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"nbsp", 160, 4}, + {"sol", 47, 3}, + {"oacute", 243, 6}, + {"compfn", 8728, 6}, + {"colon", 58, 5}, + {NULL,0,0}, + {"ohacgr", 974, 6}, + {"uacute", 250, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"vellip", 8942, 6}, + {"yacute", 253, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxDl", 9558, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"angmsd", 8737, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"frasl", 8260, 5}, + {"gEl", 10892, 3}, + {NULL,0,0}, + {"perp", 8869, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxvL", 9569, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"lpar", 40, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"frac14", 188, 6}, + {NULL,0,0}, + {"conint", 8750, 6}, + {"rpar", 41, 4}, + {"spar", 8741, 4}, + {"order", 8500, 5}, + {"there4", 8756, 6}, + {NULL,0,0}, + {"and", 8743, 3}, + {NULL,0,0}, + {NULL,0,0}, + {"PSgr", 936, 4}, + {"eegr", 951, 4}, + {"beth", 8502, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"drcorn", 8991, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"boxHU", 9577, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"starf", 9733, 5}, + {"dlcorn", 8990, 6}, + {"check", 10003, 5}, + {NULL,0,0}, + {"SOFTcy", 1068, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"dtrif", 9662, 5}, + {"iquest", 191, 6}, + {"ltrif", 9666, 5}, + {NULL,0,0}, + {"ap", 8776, 2}, + {"urcorn", 8989, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"rtrif", 9656, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"sime", 8771, 4}, + {"ulcorn", 8988, 6}, + {"Barwed", 8966, 6}, + {"utrif", 9652, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"marker", 9646, 6}, + {NULL,0,0}, + {"Atilde", 195, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"divide", 247, 6}, + {"weierp", 8472, 6}, + {NULL,0,0}, + {"sqsup", 8848, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"boxVl", 9570, 5}, + {"esdot", 8784, 5}, + {"Ntilde", 209, 6}, + {"gsdot", 8919, 5}, + {"becaus", 8757, 6}, + {"Otilde", 213, 6}, + {"ffilig", 64259, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"blank", 9251, 5}, + {"barwed", 8965, 6}, + {"sigmaf", 962, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"aelig", 230, 5}, + {NULL,0,0}, + {"atilde", 227, 6}, + {"lsquo", 8216, 5}, + {NULL,0,0}, + {"veebar", 8891, 6}, + {"target", 8982, 6}, + {NULL,0,0}, + {"rsquo", 8217, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"SHCHcy", 1065, 6}, + {NULL,0,0}, + {"oelig", 339, 5}, + {"ntilde", 241, 6}, + {"otilde", 245, 6}, + {NULL,0,0}, + {"clubs", 9827, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"crarr", 8629, 5}, + {"fork", 8916, 4}, + {"laquo", 171, 5}, + {"notin", 8713, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"DZcy", 1039, 4}, + {"raquo", 187, 5}, + {"aleph", 8501, 5}, + {NULL,0,0}, + {"phmmat", 8499, 6}, + {"middot", 183, 6}, + {"gammad", 989, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"boxuR", 9560, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"cuesc", 8927, 5}, + {NULL,0,0}, + {"dashv", 8867, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"CHcy", 1063, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"angst", 8491, 5}, + {NULL,0,0}, + {"KHcy", 1061, 4}, + {"incare", 8453, 6}, + {"Acy", 1040, 3}, + {"Bcy", 1041, 3}, + {NULL,0,0}, + {"Jsercy", 1032, 6}, + {"Dcy", 1044, 3}, + {"Ecy", 1069, 3}, + {"SHcy", 1064, 4}, + {"Gcy", 1043, 3}, + {"Fcy", 1060, 3}, + {"Icy", 1048, 3}, + {"Kcy", 1050, 3}, + {"Lcy", 1051, 3}, + {"Jcy", 1049, 3}, + {"Delta", 916, 5}, + {"Ocy", 1054, 3}, + {"cedil", 184, 5}, + {"Pcy", 1055, 3}, + {"Rcy", 1056, 3}, + {"Mcy", 1052, 3}, + {"prap", 10935, 4}, + {"Tcy", 1058, 3}, + {"Scy", 1057, 3}, + {"inodot", 305, 6}, + {"jnodot", 106, 6}, + {"frac25", 8534, 6}, + {"Ycy", 1067, 3}, + {"Gamma", 915, 5}, + {"Vcy", 1042, 3}, + {"Ncy", 1053, 3}, + {NULL,0,0}, + {"square", 9633, 6}, + {"Zcy", 1047, 3}, + {"acy", 1072, 3}, + {"bcy", 1073, 3}, + {"ZHcy", 1046, 4}, + {"jsercy", 1112, 6}, + {"dcy", 1076, 3}, + {"fcy", 1092, 3}, + {"gcy", 1075, 3}, + {"ecy", 1101, 3}, + {"icy", 1080, 3}, + {"jcy", 1081, 3}, + {"kcy", 1082, 3}, + {"lcy", 1083, 3}, + {"mcy", 1084, 3}, + {"ncy", 1085, 3}, + {"ocy", 1086, 3}, + {"pcy", 1087, 3}, + {"Iukcy", 1030, 5}, + {"rcy", 1088, 3}, + {"scy", 1089, 3}, + {"nsub", 8836, 4}, + {"boxUr", 9561, 5}, + {"ucy", 1091, 3}, + {"sccue", 8829, 5}, + {"Jukcy", 1028, 5}, + {"boxdR", 9554, 5}, + {"tcy", 1090, 3}, + {"empty", 8709, 5}, + {"female", 9792, 6}, + {"delta", 948, 5}, + {"gamma", 947, 5}, + {"ycy", 1099, 3}, + {"twixt", 8812, 5}, + {NULL,0,0}, + {"EEacgr", 905, 6}, + {NULL,0,0}, + {"zcy", 1079, 3}, + {"copysr", 8471, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"times", 215, 5}, + {NULL,0,0}, + {"vcy", 1074, 3}, + {"Ucy", 1059, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"iukcy", 1110, 5}, + {"subE", 10949, 4}, + {"jukcy", 1108, 5}, + {NULL,0,0}, + {"lfloor", 8970, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"rfloor", 8971, 6}, + {"pre", 10927, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"radic", 8730, 5}, + {"kappav", 1008, 6}, + {NULL,0,0}, + {"circ", 710, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"frac78", 8542, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"softcy", 1100, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"dollar", 36, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxv", 9474, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"plusmn", 177, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"cross", 10007, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"boxDr", 9555, 5}, + {NULL,0,0}, + {"dblac", 733, 5}, + {"sqcap", 8851, 5}, + {NULL,0,0}, + {"boxhd", 9516, 5}, + {"ordm", 186, 4}, + {"lowast", 8727, 6}, + {"KHgr", 935, 4}, + {"mid", 8739, 3}, + {NULL,0,0}, + {"emsp14", 8197, 6}, + {"OHgr", 937, 4}, + {"PHgr", 934, 4}, + {"sfgr", 962, 4}, + {NULL,0,0}, + {"Verbar", 8214, 6}, + {"Beta", 914, 4}, + {"Psi", 936, 3}, + {NULL,0,0}, + {"THgr", 920, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"curren", 164, 6}, + {"puncsp", 8200, 6}, + {NULL,0,0}, + {"Vdash", 8873, 5}, + {"boxvR", 9566, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Rho", 929, 3}, + {"shchcy", 1097, 6}, + {"ge", 8805, 2}, + {"Zeta", 918, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"mdash", 8212, 5}, + {"ndash", 8211, 5}, + {"odash", 8861, 5}, + {"beta", 946, 4}, + {"le", 8804, 2}, + {"Sub", 8912, 3}, + {"lagran", 8466, 6}, + {"verbar", 124, 6}, + {"boxUL", 9565, 5}, + {"ne", 8800, 2}, + {"vdash", 8866, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"psi", 968, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"fllig", 64258, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"image", 8465, 5}, + {"oS", 9416, 2}, + {"rho", 961, 3}, + {"hairsp", 8202, 6}, + {"fflig", 64256, 5}, + {"lowbar", 95, 6}, + {"male", 9794, 4}, + {NULL,0,0}, + {"zeta", 950, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"commat", 64, 6}, + {NULL,0,0}, + {"cuepr", 8926, 5}, + {"sub", 8834, 3}, + {NULL,0,0}, + {"lsqb", 91, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"rsqb", 93, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"dArr", 8659, 4}, + {"boxVr", 9567, 5}, + {"sbquo", 8218, 5}, + {"dscy", 1109, 4}, + {"hArr", 8660, 4}, + {"brvbar", 166, 6}, + {"scsim", 8831, 5}, + {NULL,0,0}, + {"lArr", 8656, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"rArr", 8658, 4}, + {"lceil", 8968, 5}, + {"boxvh", 9532, 5}, + {"cuvee", 8910, 5}, + {"IOcy", 1025, 4}, + {"tscy", 1094, 4}, + {"Idigr", 938, 5}, + {"rceil", 8969, 5}, + {"bumpe", 8783, 5}, + {"planck", 8463, 6}, + {NULL,0,0}, + {"squf", 9642, 4}, + {"yen", 165, 3}, + {"uArr", 8657, 4}, + {"YUcy", 1070, 4}, + {"oast", 8859, 4}, + {"equals", 61, 6}, + {"diam", 8900, 4}, + {"Udigr", 939, 5}, + {"boxDL", 9559, 5}, + {NULL,0,0}, + {"frac13", 8531, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"YIcy", 1031, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"yacy", 1103, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"bump", 8782, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"idigr", 970, 5}, + {"xutri", 9651, 5}, + {"ohm", 8486, 3}, + {NULL,0,0}, + {"comp", 8705, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"infin", 8734, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"udigr", 971, 5}, + {NULL,0,0}, + {"asymp", 8776, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"lozf", 10731, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"sext", 10038, 4}, + {"Ubrcy", 1038, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"bottom", 8869, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Theta", 920, 5}, + {NULL,0,0}, + {"gel", 8923, 3}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"lsaquo", 8249, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"rsaquo", 8250, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"ubrcy", 1118, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"intcal", 8890, 6}, + {"quest", 63, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"theta", 952, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"boxVL", 9571, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"forall", 8704, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"half", 189, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"bull", 8226, 4}, + {"psgr", 968, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Dagger", 8225, 6}, + {"Aring", 197, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"Ll", 8920, 2}, + {"models", 8871, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"zwj", 8205, 3}, + {"prod", 8719, 4}, + {NULL,0,0}, + {NULL,0,0}, + {"Chi", 935, 3}, + {"rect", 9645, 4}, + {"sect", 167, 4}, + {"lsquor", 8218, 6}, + {NULL,0,0}, + {"thetas", 952, 6}, + {"cuwed", 8911, 5}, + {NULL,0,0}, + {NULL,0,0}, + {"rsquor", 8217, 6}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"Phi", 934, 3}, + {"rx", 8478, 2}, + {NULL,0,0}, + {NULL,0,0}, + {"gl", 8823, 2}, + {"or", 8744, 2}, + {"pr", 8826, 2}, + {"aring", 229, 5}, + {"dagger", 8224, 6}, + {NULL,0,0}, + {NULL,0,0}, + {"diams", 9830, 5}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {"chi", 967, 3}, + {NULL,0,0}, + {NULL,0,0}, + {"ordf", 170, 4}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, + {NULL,0,0}, }; const struct hashtable entities_htable = { entities_htable_elements, 1543, 743, 1234 diff --git a/libclamav/hashtab.c b/libclamav/hashtab.c index 8cd87403d..bbb4ef503 100644 --- a/libclamav/hashtab.c +++ b/libclamav/hashtab.c @@ -221,7 +221,7 @@ struct element* hashtab_find(const struct hashtable *s,const char* key,const siz PROFILE_FIND_NOTFOUND(s, tries); return NULL; /* element not found, place is empty*/ } - else if(element->key != DELETED_KEY && strncmp(key, element->key,len)==0) { + else if(element->key != DELETED_KEY && len == element->len && strncmp(key, element->key,len)==0) { PROFILE_FIND_FOUND(s, tries); return element;/* found */ } @@ -250,7 +250,7 @@ static int hashtab_grow(struct hashtable *s) size_t tries = 1; PROFILE_CALC_HASH(s); - idx = hash((const unsigned char*)s->htable[i].key, strlen(s->htable[i].key), new_capacity); + idx = hash((const unsigned char*)s->htable[i].key, s->htable[i].len, new_capacity); element = &htable[idx]; while(element->key && tries <= new_capacity) { @@ -307,9 +307,10 @@ int hashtab_insert(struct hashtable *s, const char* key, const size_t len, const thekey = cli_malloc(len+1); if(!thekey) return CL_EMEM; - strncpy(thekey,(const char*)key,len+1); + strncpy(thekey, key, len+1); element->key = thekey; element->data = data; + element->len = len; s->used++; if(s->used > s->maxfill) { cli_dbgmsg("hashtab.c:Growing hashtable %p, because it has exceeded maxfill, old size:%ld\n",(void*)s,s->capacity); @@ -320,10 +321,10 @@ int hashtab_insert(struct hashtable *s, const char* key, const size_t len, const else if(element->key == DELETED_KEY) { deleted_element = element; } - else if(strncmp((const char*)key,(const char*)element->key,len)==0) { + else if(len == element->len && strncmp(key, element->key, len)==0) { PROFILE_DATA_UPDATE(s, tries); element->data = data;/* key found, update */ - return 0; + return 0; } else { idx = (idx + tries++) % s->capacity; @@ -383,11 +384,11 @@ int hashtab_generate_c(const struct hashtable *s,const char* name) for(i=0; i < s->capacity; i++) { const struct element* e = &s->htable[i]; if(!e->key) - printf("\t{NULL, 0},\n"); + printf("\t{NULL,0,0},\n"); else if(e->key == DELETED_KEY) - printf("\t{DELETED_KEY,0},\n"); + printf("\t{DELETED_KEY,0,0},\n"); else - printf("\t{\"%s\", %ld},\n", e->key, e->data); + printf("\t{\"%s\", %ld, %ld},\n", e->key, e->data, e->len); } printf("};\n"); printf("const struct hashtable %s = {\n",name); diff --git a/libclamav/hashtab.h b/libclamav/hashtab.h index 6001e40c4..fc3b617a6 100644 --- a/libclamav/hashtab.h +++ b/libclamav/hashtab.h @@ -60,6 +60,7 @@ typedef struct { struct element { const char* key; + size_t len; element_data data; };