예제 #1
0
 public static IntHash GetHashCanClasses()
 {
     if (table != null)
     {
         return(table);
     }
     else
     {
         table = new IntHash(384);
         table.Put(0x20D0, 230);
         table.Put(0x0A4D, 9);
         table.Put(0x0E49, 107);
         table.Put(0x0954, 230);
         table.Put(0x0E48, 107);
         table.Put(0x0953, 230);
         table.Put(0x0952, 220);
         table.Put(0x0951, 230);
         table.Put(0x094D, 9);
         table.Put(0x0E3A, 9);
         table.Put(0x17DD, 230);
         table.Put(0x0A3C, 7);
         table.Put(0x0E39, 103);
         table.Put(0x0E38, 103);
         table.Put(0x17D2, 9);
         table.Put(0x093C, 7);
         table.Put(0x06ED, 220);
         table.Put(0x06EC, 230);
         table.Put(0x06EB, 230);
         table.Put(0x06EA, 220);
         table.Put(0x06E8, 230);
         table.Put(0x06E7, 230);
         table.Put(0x06E4, 230);
         table.Put(0x06E3, 220);
         table.Put(0x06E2, 230);
         table.Put(0x06E1, 230);
         table.Put(0x06E0, 230);
         table.Put(0x06DF, 230);
         table.Put(0x06DC, 230);
         table.Put(0x06DB, 230);
         table.Put(0x06DA, 230);
         table.Put(0x0BCD, 9);
         table.Put(0x0486, 230);
         table.Put(0x0485, 230);
         table.Put(0x0484, 230);
         table.Put(0x0FC6, 220);
         table.Put(0x0483, 230);
         table.Put(0x06D9, 230);
         table.Put(0x06D8, 230);
         table.Put(0x06D7, 230);
         table.Put(0x06D6, 230);
         table.Put(0xA806, 9);
         table.Put(0x193B, 220);
         table.Put(0x193A, 230);
         table.Put(0x1939, 222);
         table.Put(0x0D4D, 9);
         table.Put(0x1A18, 220);
         table.Put(0x1A17, 230);
         table.Put(0x1D1AD, 230);
         table.Put(0x1D1AC, 230);
         table.Put(0x1D1AB, 230);
         table.Put(0x1D1AA, 230);
         table.Put(0xFB1E, 26);
         table.Put(0x0ECB, 122);
         table.Put(0x0ECA, 122);
         table.Put(0x0ACD, 9);
         table.Put(0x0EC9, 122);
         table.Put(0x0EC8, 122);
         table.Put(0x09CD, 9);
         table.Put(0x0ABC, 7);
         table.Put(0x0EB9, 118);
         table.Put(0x0EB8, 118);
         table.Put(0x05C7, 18);
         table.Put(0x05C5, 220);
         table.Put(0x05C4, 230);
         table.Put(0x05C2, 25);
         table.Put(0x05C1, 24);
         table.Put(0x036F, 230);
         table.Put(0x036E, 230);
         table.Put(0x09BC, 7);
         table.Put(0x036D, 230);
         table.Put(0x036C, 230);
         table.Put(0x036B, 230);
         table.Put(0x036A, 230);
         table.Put(0x05BF, 23);
         table.Put(0x05BD, 22);
         table.Put(0x05BC, 21);
         table.Put(0x05BB, 20);
         table.Put(0x0C56, 91);
         table.Put(0x0C55, 84);
         table.Put(0x0369, 230);
         table.Put(0x0368, 230);
         table.Put(0x0367, 230);
         table.Put(0x0366, 230);
         table.Put(0x0365, 230);
         table.Put(0x0364, 230);
         table.Put(0x0363, 230);
         table.Put(0x0362, 233);
         table.Put(0x05B9, 19);
         table.Put(0x0361, 234);
         table.Put(0x05B8, 18);
         table.Put(0x0360, 234);
         table.Put(0x05B7, 17);
         table.Put(0x05B6, 16);
         table.Put(0x05B5, 15);
         table.Put(0x05B4, 14);
         table.Put(0x05B3, 13);
         table.Put(0x05B2, 12);
         table.Put(0x05B1, 11);
         table.Put(0x0C4D, 9);
         table.Put(0x05B0, 10);
         table.Put(0x035F, 233);
         table.Put(0x035E, 234);
         table.Put(0x035D, 234);
         table.Put(0x035C, 233);
         table.Put(0x035B, 230);
         table.Put(0x035A, 220);
         table.Put(0x05AF, 230);
         table.Put(0x05AE, 228);
         table.Put(0x05AD, 222);
         table.Put(0x05AC, 230);
         table.Put(0x05AB, 230);
         table.Put(0x05AA, 220);
         table.Put(0x1039, 9);
         table.Put(0x0359, 220);
         table.Put(0x0358, 232);
         table.Put(0x1037, 7);
         table.Put(0x0357, 230);
         table.Put(0x0356, 220);
         table.Put(0x0355, 220);
         table.Put(0x0354, 220);
         table.Put(0x0353, 220);
         table.Put(0x0352, 230);
         table.Put(0x05A9, 230);
         table.Put(0x0351, 230);
         table.Put(0x05A8, 230);
         table.Put(0x0350, 230);
         table.Put(0x05A7, 220);
         table.Put(0x05A6, 220);
         table.Put(0x05A5, 220);
         table.Put(0x05A4, 220);
         table.Put(0x05A3, 220);
         table.Put(0x05A2, 220);
         table.Put(0x074A, 230);
         table.Put(0x05A1, 230);
         table.Put(0x05A0, 230);
         table.Put(0x034E, 220);
         table.Put(0x034D, 220);
         table.Put(0x034C, 230);
         table.Put(0x034B, 230);
         table.Put(0x0749, 230);
         table.Put(0x034A, 230);
         table.Put(0x0748, 220);
         table.Put(0x0747, 230);
         table.Put(0x0746, 220);
         table.Put(0x0745, 230);
         table.Put(0x0744, 220);
         table.Put(0x0743, 230);
         table.Put(0x0742, 220);
         table.Put(0x0741, 230);
         table.Put(0x0349, 220);
         table.Put(0x0740, 230);
         table.Put(0x0348, 220);
         table.Put(0x0347, 220);
         table.Put(0x0346, 230);
         table.Put(0x0345, 240);
         table.Put(0x0344, 230);
         table.Put(0x0343, 230);
         table.Put(0x0342, 230);
         table.Put(0x0341, 230);
         table.Put(0x0340, 230);
         table.Put(0x073F, 230);
         table.Put(0x073E, 220);
         table.Put(0x073D, 230);
         table.Put(0x073C, 220);
         table.Put(0x073B, 220);
         table.Put(0x073A, 230);
         table.Put(0x309A, 8);
         table.Put(0x033F, 230);
         table.Put(0x033E, 230);
         table.Put(0x033D, 230);
         table.Put(0x033C, 220);
         table.Put(0x033B, 220);
         table.Put(0x0739, 220);
         table.Put(0x033A, 220);
         table.Put(0x0738, 220);
         table.Put(0x0737, 220);
         table.Put(0x0736, 230);
         table.Put(0x3099, 8);
         table.Put(0x0735, 230);
         table.Put(0xFE23, 230);
         table.Put(0x0734, 220);
         table.Put(0x0F87, 230);
         table.Put(0xFE22, 230);
         table.Put(0x0733, 230);
         table.Put(0x0F86, 230);
         table.Put(0xFE21, 230);
         table.Put(0x0732, 230);
         table.Put(0xFE20, 230);
         table.Put(0x0731, 220);
         table.Put(0x0F84, 9);
         table.Put(0x0339, 220);
         table.Put(0x0730, 230);
         table.Put(0x0F83, 230);
         table.Put(0x0338, 1);
         table.Put(0x0F82, 230);
         table.Put(0x0337, 1);
         table.Put(0x0336, 1);
         table.Put(0x0F80, 130);
         table.Put(0x0335, 1);
         table.Put(0x0334, 1);
         table.Put(0x0333, 220);
         table.Put(0x0332, 220);
         table.Put(0x0331, 220);
         table.Put(0x0330, 220);
         table.Put(0x1D244, 230);
         table.Put(0x1D243, 230);
         table.Put(0x1D242, 230);
         table.Put(0x0F7D, 130);
         table.Put(0x0F7C, 130);
         table.Put(0x0F7B, 130);
         table.Put(0x0F7A, 130);
         table.Put(0x032F, 220);
         table.Put(0x032E, 220);
         table.Put(0x032D, 220);
         table.Put(0x032C, 220);
         table.Put(0x032B, 220);
         table.Put(0x032A, 220);
         table.Put(0x0F74, 132);
         table.Put(0x0329, 220);
         table.Put(0x0328, 202);
         table.Put(0x0F72, 130);
         table.Put(0x0327, 202);
         table.Put(0x0DCA, 9);
         table.Put(0x0F71, 129);
         table.Put(0x0326, 220);
         table.Put(0x0325, 220);
         table.Put(0x0324, 220);
         table.Put(0x0323, 220);
         table.Put(0x0322, 202);
         table.Put(0x0321, 202);
         table.Put(0x0320, 220);
         table.Put(0x10A3F, 9);
         table.Put(0x135F, 230);
         table.Put(0x10A3A, 220);
         table.Put(0x031F, 220);
         table.Put(0x031E, 220);
         table.Put(0x031D, 220);
         table.Put(0x031C, 220);
         table.Put(0x031B, 216);
         table.Put(0x031A, 232);
         table.Put(0x10A39, 1);
         table.Put(0x10A38, 230);
         table.Put(0x0711, 36);
         table.Put(0x0319, 220);
         table.Put(0x0318, 220);
         table.Put(0x0317, 220);
         table.Put(0x0316, 220);
         table.Put(0x0315, 232);
         table.Put(0x0314, 230);
         table.Put(0x1D18B, 220);
         table.Put(0x0313, 230);
         table.Put(0x1D18A, 220);
         table.Put(0x0312, 230);
         table.Put(0x0311, 230);
         table.Put(0x0670, 35);
         table.Put(0x0310, 230);
         table.Put(0x1D189, 230);
         table.Put(0x1D188, 230);
         table.Put(0x1D187, 230);
         table.Put(0x1D186, 230);
         table.Put(0x030F, 230);
         table.Put(0x1D185, 230);
         table.Put(0x030E, 230);
         table.Put(0x030D, 230);
         table.Put(0x030C, 230);
         table.Put(0x1D182, 220);
         table.Put(0x030B, 230);
         table.Put(0x1D181, 220);
         table.Put(0x030A, 230);
         table.Put(0x1D180, 220);
         table.Put(0x0309, 230);
         table.Put(0x0308, 230);
         table.Put(0x1D17F, 220);
         table.Put(0x0307, 230);
         table.Put(0x1D17E, 220);
         table.Put(0x0306, 230);
         table.Put(0x1D17D, 220);
         table.Put(0x0305, 230);
         table.Put(0x1D17C, 220);
         table.Put(0x0304, 230);
         table.Put(0x1D17B, 220);
         table.Put(0x0303, 230);
         table.Put(0x0302, 230);
         table.Put(0x0301, 230);
         table.Put(0x0300, 230);
         table.Put(0x065E, 230);
         table.Put(0x065D, 230);
         table.Put(0x065C, 220);
         table.Put(0x065B, 230);
         table.Put(0x1D172, 216);
         table.Put(0x065A, 230);
         table.Put(0x1D171, 216);
         table.Put(0x0B4D, 9);
         table.Put(0x1D170, 216);
         table.Put(0x1734, 9);
         table.Put(0x0659, 230);
         table.Put(0x0658, 230);
         table.Put(0x0657, 230);
         table.Put(0x1D16F, 216);
         table.Put(0x0656, 220);
         table.Put(0x1D16E, 216);
         table.Put(0x0655, 220);
         table.Put(0x1D16D, 226);
         table.Put(0x0654, 230);
         table.Put(0x0653, 230);
         table.Put(0x0652, 34);
         table.Put(0x0651, 33);
         table.Put(0x0650, 32);
         table.Put(0x10A0F, 230);
         table.Put(0x10A0D, 220);
         table.Put(0x1D169, 1);
         table.Put(0x1D168, 1);
         table.Put(0x1D167, 1);
         table.Put(0x064F, 31);
         table.Put(0x1D166, 216);
         table.Put(0x064E, 30);
         table.Put(0x1D165, 216);
         table.Put(0x064D, 29);
         table.Put(0x064C, 28);
         table.Put(0x064B, 27);
         table.Put(0x0B3C, 7);
         table.Put(0x0F39, 216);
         table.Put(0x0F37, 220);
         table.Put(0x0F35, 220);
         table.Put(0x1DC3, 230);
         table.Put(0x1DC2, 220);
         table.Put(0x1DC1, 230);
         table.Put(0x1DC0, 230);
         table.Put(0x059F, 230);
         table.Put(0x1714, 9);
         table.Put(0x059E, 230);
         table.Put(0x059D, 230);
         table.Put(0x059C, 230);
         table.Put(0x059B, 220);
         table.Put(0x059A, 222);
         table.Put(0x0599, 230);
         table.Put(0x0598, 230);
         table.Put(0x0597, 230);
         table.Put(0x0596, 220);
         table.Put(0x0595, 230);
         table.Put(0x0594, 230);
         table.Put(0x0593, 230);
         table.Put(0x302F, 224);
         table.Put(0x0592, 230);
         table.Put(0x302E, 224);
         table.Put(0x0591, 220);
         table.Put(0x302D, 222);
         table.Put(0x302C, 232);
         table.Put(0x302B, 228);
         table.Put(0x302A, 218);
         table.Put(0x0F19, 220);
         table.Put(0x0F18, 220);
         table.Put(0x0CCD, 9);
         table.Put(0x0615, 230);
         table.Put(0x0614, 230);
         table.Put(0x18A9, 228);
         table.Put(0x0613, 230);
         table.Put(0x0612, 230);
         table.Put(0x0611, 230);
         table.Put(0x0CBC, 7);
         table.Put(0x0610, 230);
         table.Put(0x20EB, 1);
         table.Put(0x20EA, 1);
         table.Put(0x20E9, 230);
         table.Put(0x20E8, 220);
         table.Put(0x20E7, 230);
         table.Put(0x20E6, 1);
         table.Put(0x20E5, 1);
         table.Put(0x20E1, 230);
         table.Put(0x20DC, 230);
         table.Put(0x20DB, 230);
         table.Put(0x20DA, 1);
         table.Put(0x20D9, 1);
         table.Put(0x20D8, 1);
         table.Put(0x20D7, 230);
         table.Put(0x20D6, 230);
         table.Put(0x0E4B, 107);
         table.Put(0x20D5, 230);
         table.Put(0x0E4A, 107);
         table.Put(0x20D4, 230);
         table.Put(0x20D3, 1);
         table.Put(0x20D2, 1);
         table.Put(0x20D1, 230);
         return(table);
     }
 }
 public static IntHash GetHashSingleDecompositions()
 {
     if (table != null)
     {
         return(table);
     }
     else
     {
         table = new IntHash(1030);
         table.Put(0x6688, 0);
         table.Put(0x00B7, 0);
         table.Put(0x86A9, 0);
         table.Put(0x00B4, 0);
         table.Put(0x7409, 0);
         table.Put(0x559D, 0);
         table.Put(0x884C, 0);
         table.Put(0x523B, 0);
         table.Put(0x6DCB, 0);
         table.Put(0x8AFE, 0);
         table.Put(0x523A, 0);
         table.Put(0x7406, 0);
         table.Put(0x53F1, 0);
         table.Put(0x5599, 0);
         table.Put(0x6F6E, 0);
         table.Put(0x8AF8, 0);
         table.Put(0x3862, 0);
         table.Put(0x5B28, 0);
         table.Put(0x53EB, 0);
         table.Put(0x2300A, 0);
         table.Put(0x9929, 0);
         table.Put(0x9928, 0);
         table.Put(0x6674, 0);
         table.Put(0x8046, 0);
         table.Put(0x53E5, 0);
         table.Put(0x8AED, 0);
         table.Put(0x2054B, 0);
         table.Put(0x5229, 0);
         table.Put(0x64C4, 0);
         table.Put(0x278AE, 0);
         table.Put(0x53DF, 0);
         table.Put(0x5587, 0);
         table.Put(0x2335F, 0);
         table.Put(0x5584, 0);
         table.Put(0x92D8, 0);
         table.Put(0x92D7, 0);
         table.Put(0x5E74, 0);
         table.Put(0x774A, 0);
         table.Put(0x911B, 0);
         table.Put(0x81ED, 0);
         table.Put(0x78FB, 0);
         table.Put(0x5CC0, 0);
         table.Put(0x7740, 0);
         table.Put(0x81E8, 0);
         table.Put(0x9111, 0);
         table.Put(0x9D67, 0);
         table.Put(0x5217, 0);
         table.Put(0x2A20E, 0);
         table.Put(0x5B08, 0);
         table.Put(0x5E69, 0);
         table.Put(0x8AD6, 0);
         table.Put(0x267B5, 0);
         table.Put(0x412F, 0);
         table.Put(0x53CA, 0);
         table.Put(0x8AD2, 0);
         table.Put(0x881F, 0);
         table.Put(0x53C3, 0);
         table.Put(0x2940A, 0);
         table.Put(0x8ACB, 0);
         table.Put(0x256C5, 0);
         table.Put(0x4BCE, 0);
         table.Put(0x81D8, 0);
         table.Put(0x5207, 0);
         table.Put(0x267A7, 0);
         table.Put(0x3AE4, 0);
         table.Put(0x5203, 0);
         table.Put(0x5563, 0);
         table.Put(0x7295, 0);
         table.Put(0x20525, 0);
         table.Put(0x6649, 0);
         table.Put(0x23F8E, 0);
         table.Put(0x382F, 0);
         table.Put(0x295B6, 0);
         table.Put(0x67FA, 0);
         table.Put(0x8ABF, 0);
         table.Put(0x2051C, 0);
         table.Put(0x03CE, 0);
         table.Put(0x67F3, 0);
         table.Put(0x9EFE, 0);
         table.Put(0x03CD, 0);
         table.Put(0x03CC, 0);
         table.Put(0x5555, 0);
         table.Put(0x5553, 0);
         table.Put(0x771F, 0);
         table.Put(0x8801, 0);
         table.Put(0x771E, 0);
         table.Put(0x446B, 0);
         table.Put(0x7280, 0);
         table.Put(0x9EF9, 0);
         table.Put(0x8005, 0);
         table.Put(0x70D9, 0);
         table.Put(0x8363, 0);
         table.Put(0x8001, 0);
         table.Put(0x5FF9, 0);
         table.Put(0x6F23, 0);
         table.Put(0x6F22, 0);
         table.Put(0x8C55, 0);
         table.Put(0x5E3D, 0);
         table.Put(0x5FF5, 0);
         table.Put(0x8AAA, 0);
         table.Put(0x78CC, 0);
         table.Put(0x78CA, 0);
         table.Put(0x4D56, 0);
         table.Put(0x6190, 0);
         table.Put(0x8AA0, 0);
         table.Put(0x618E, 0);
         table.Put(0x03B9, 0);
         table.Put(0x56F9, 0);
         table.Put(0x273CA, 0);
         table.Put(0x70C8, 0);
         table.Put(0x8353, 0);
         table.Put(0x8C48, 0);
         table.Put(0x8352, 0);
         table.Put(0x03B0, 0);
         table.Put(0x25044, 0);
         table.Put(0x7701, 0);
         table.Put(0x03AF, 0);
         table.Put(0x03AE, 0);
         table.Put(0x6F0F, 0);
         table.Put(0x03AD, 0);
         table.Put(0x03AC, 0);
         table.Put(0x5E28, 0);
         table.Put(0x8F9E, 0);
         table.Put(0x3009, 0);
         table.Put(0x7262, 0);
         table.Put(0x3008, 0);
         table.Put(0x23F5E, 0);
         table.Put(0x8DF0, 0);
         table.Put(0x03A9, 0);
         table.Put(0x42A0, 0);
         table.Put(0x5099, 0);
         table.Put(0x262D9, 0);
         table.Put(0x617A, 0);
         table.Put(0x6613, 0);
         table.Put(0x84FC, 0);
         table.Put(0x8DEF, 0);
         table.Put(0x5FD7, 0);
         table.Put(0x26D6B, 0);
         table.Put(0x27CA8, 0);
         table.Put(0x9ECE, 0);
         table.Put(0x22B0C, 0);
         table.Put(0x3C4E, 0);
         table.Put(0x84F3, 0);
         table.Put(0x25C80, 0);
         table.Put(0x45F9, 0);
         table.Put(0x84F1, 0);
         table.Put(0x70AD, 0);
         table.Put(0x5FCD, 0);
         table.Put(0x7250, 0);
         table.Put(0x4EE4, 0);
         table.Put(0x8336, 0);
         table.Put(0x84EE, 0);
         table.Put(0x6168, 0);
         table.Put(0x9415, 0);
         table.Put(0x24735, 0);
         table.Put(0x6160, 0);
         table.Put(0x9EBB, 0);
         table.Put(0x507A, 0);
         table.Put(0x5510, 0);
         table.Put(0x8688, 0);
         table.Put(0x8323, 0);
         table.Put(0x7CE8, 0);
         table.Put(0x8DCB, 0);
         table.Put(0x7CE7, 0);
         table.Put(0x7CE3, 0);
         table.Put(0x4ECC, 0);
         table.Put(0x831D, 0);
         table.Put(0x7235, 0);
         table.Put(0x45D7, 0);
         table.Put(0x95B7, 0);
         table.Put(0x5FAD, 0);
         table.Put(0x614E, 0);
         table.Put(0x614C, 0);
         table.Put(0x7B20, 0);
         table.Put(0x6942, 0);
         table.Put(0x4EC0, 0);
         table.Put(0x585E, 0);
         table.Put(0x5FA9, 0);
         table.Put(0x8DBC, 0);
         table.Put(0x585A, 0);
         table.Put(0x722B, 0);
         table.Put(0x6148, 0);
         table.Put(0x8F62, 0);
         table.Put(0x23A8D, 0);
         table.Put(0x7CD6, 0);
         table.Put(0x9756, 0);
         table.Put(0x95AD, 0);
         table.Put(0x62FE, 0);
         table.Put(0x6144, 0);
         table.Put(0x62FC, 0);
         table.Put(0x7CD2, 0);
         table.Put(0x7228, 0);
         table.Put(0x73DE, 0);
         table.Put(0x25AA7, 0);
         table.Put(0x440B, 0);
         table.Put(0x8669, 0);
         table.Put(0x34DF, 0);
         table.Put(0x649D, 0);
         table.Put(0x8667, 0);
         table.Put(0x3C18, 0);
         table.Put(0x649A, 0);
         table.Put(0x9748, 0);
         table.Put(0x721B, 0);
         table.Put(0x98FC, 0);
         table.Put(0x4EAE, 0);
         table.Put(0x6D85, 0);
         table.Put(0x865C, 0);
         table.Put(0x5840, 0);
         table.Put(0x20804, 0);
         table.Put(0x90FD, 0);
         table.Put(0x7210, 0);
         table.Put(0x7CBE, 0);
         table.Put(0x7570, 0);
         table.Put(0x24263, 0);
         table.Put(0x0060, 0);
         table.Put(0x8650, 0);
         table.Put(0x29B30, 0);
         table.Put(0x98EF, 0);
         table.Put(0x90F1, 0);
         table.Put(0x6D78, 0);
         table.Put(0x9732, 0);
         table.Put(0x6D77, 0);
         table.Put(0x51F5, 0);
         table.Put(0x6A13, 0);
         table.Put(0x2A392, 0);
         table.Put(0x59EC, 0);
         table.Put(0x5832, 0);
         table.Put(0x7565, 0);
         table.Put(0x5831, 0);
         table.Put(0x5C8D, 0);
         table.Put(0x8F3B, 0);
         table.Put(0x647E, 0);
         table.Put(0x2569A, 0);
         table.Put(0x62D4, 0);
         table.Put(0x62D3, 0);
         table.Put(0x28BFA, 0);
         table.Put(0x6914, 0);
         table.Put(0x98E2, 0);
         table.Put(0x34BB, 0);
         table.Put(0x8F38, 0);
         table.Put(0x6D6A, 0);
         table.Put(0x73B2, 0);
         table.Put(0x34B9, 0);
         table.Put(0x62CF, 0);
         table.Put(0x6477, 0);
         table.Put(0x226D4, 0);
         table.Put(0x25F86, 0);
         table.Put(0x6D69, 0);
         table.Put(0x9723, 0);
         table.Put(0x863F, 0);
         table.Put(0x004B, 0);
         table.Put(0x7559, 0);
         table.Put(0x502B, 0);
         table.Put(0x6A02, 0);
         table.Put(0x6BBB, 0);
         table.Put(0x6BBA, 0);
         table.Put(0x62C9, 0);
         table.Put(0x8F2A, 0);
         table.Put(0x7E45, 0);
         table.Put(0x7E41, 0);
         table.Put(0x7FFA, 0);
         table.Put(0x51DE, 0);
         table.Put(0x59D8, 0);
         table.Put(0x8996, 0);
         table.Put(0x51DC, 0);
         table.Put(0x8F26, 0);
         table.Put(0x73A5, 0);
         table.Put(0x6108, 0);
         table.Put(0x6469, 0);
         table.Put(0x927C, 0);
         table.Put(0x9B6F, 0);
         table.Put(0x537F, 0);
         table.Put(0x6BAE, 0);
         table.Put(0x003B, 0);
         table.Put(0x862D, 0);
         table.Put(0x537D, 0);
         table.Put(0x2921A, 0);
         table.Put(0x898B, 0);
         table.Put(0x87E1, 0);
         table.Put(0x5C6E, 0);
         table.Put(0x90CE, 0);
         table.Put(0x9276, 0);
         table.Put(0x7E37, 0);
         table.Put(0x62B1, 0);
         table.Put(0x8986, 0);
         table.Put(0x5375, 0);
         table.Put(0x51CC, 0);
         table.Put(0x5373, 0);
         table.Put(0x580D, 0);
         table.Put(0x0390, 0);
         table.Put(0x753E, 0);
         table.Put(0x5C65, 0);
         table.Put(0x5C64, 0);
         table.Put(0x76F4, 0);
         table.Put(0x21D0B, 0);
         table.Put(0x40E3, 0);
         table.Put(0x753B, 0);
         table.Put(0x5C62, 0);
         table.Put(0x5C60, 0);
         table.Put(0x51C9, 0);
         table.Put(0x038F, 0);
         table.Put(0x038E, 0);
         table.Put(0x6452, 0);
         table.Put(0x038C, 0);
         table.Put(0x038A, 0);
         table.Put(0x6D41, 0);
         table.Put(0x5AB5, 0);
         table.Put(0x28D77, 0);
         table.Put(0x0389, 0);
         table.Put(0x7891, 0);
         table.Put(0x0388, 0);
         table.Put(0x0386, 0);
         table.Put(0x0385, 0);
         table.Put(0x265A8, 0);
         table.Put(0x6D3E, 0);
         table.Put(0x7099, 0);
         table.Put(0x5002, 0);
         table.Put(0x8612, 0);
         table.Put(0x76E7, 0);
         table.Put(0x788C, 0);
         table.Put(0x51B7, 0);
         table.Put(0x2284A, 0);
         table.Put(0x51B5, 0);
         table.Put(0x6D34, 0);
         table.Put(0x535A, 0);
         table.Put(0x3F1B, 0);
         table.Put(0x7524, 0);
         table.Put(0x76DB, 0);
         table.Put(0x22844, 0);
         table.Put(0x8606, 0);
         table.Put(0x9CFD, 0);
         table.Put(0x51AC, 0);
         table.Put(0x8964, 0);
         table.Put(0x87BA, 0);
         table.Put(0x5351, 0);
         table.Put(0x5DFD, 0);
         table.Put(0x6797, 0);
         table.Put(0x9E9F, 0);
         table.Put(0x51A4, 0);
         table.Put(0x6EDB, 0);
         table.Put(0x5C3F, 0);
         table.Put(0x707D, 0);
         table.Put(0x7E09, 0);
         table.Put(0x76CA, 0);
         table.Put(0x5F9A, 0);
         table.Put(0x7FBD, 0);
         table.Put(0x5349, 0);
         table.Put(0x9E97, 0);
         table.Put(0x65E3, 0);
         table.Put(0x7E02, 0);
         table.Put(0x65E2, 0);
         table.Put(0x6D1E, 0);
         table.Put(0x7077, 0);
         table.Put(0x3A6C, 0);
         table.Put(0x6D1B, 0);
         table.Put(0x6ED1, 0);
         table.Put(0x93F9, 0);
         table.Put(0x7070, 0);
         table.Put(0x786B, 0);
         table.Put(0x6785, 0);
         table.Put(0x6422, 0);
         table.Put(0x533F, 0);
         table.Put(0x6D16, 0);
         table.Put(0x54F6, 0);
         table.Put(0x6ECB, 0);
         table.Put(0x7506, 0);
         table.Put(0x9238, 0);
         table.Put(0x5DE2, 0);
         table.Put(0x5F8B, 0);
         table.Put(0x9234, 0);
         table.Put(0x5DE1, 0);
         table.Put(0x641C, 0);
         table.Put(0x677B, 0);
         table.Put(0x6EC7, 0);
         table.Put(0x243AB, 0);
         table.Put(0x2346D, 0);
         table.Put(0x8941, 0);
         table.Put(0x4CF8, 0);
         table.Put(0x5C22, 0);
         table.Put(0x958B, 0);
         table.Put(0x9E7F, 0);
         table.Put(0x6EBA, 0);
         table.Put(0x65C5, 0);
         table.Put(0x4CED, 0);
         table.Put(0x4B33, 0);
         table.Put(0x813E, 0);
         table.Put(0x232B8, 0);
         table.Put(0x9B12, 0);
         table.Put(0x784E, 0);
         table.Put(0x25626, 0);
         table.Put(0x285ED, 0);
         table.Put(0x704A, 0);
         table.Put(0x5F6B, 0);
         table.Put(0x2063A, 0);
         table.Put(0x2597C, 0);
         table.Put(0x4E86, 0);
         table.Put(0x675E, 0);
         table.Put(0x82E6, 0);
         table.Put(0x5317, 0);
         table.Put(0x82E5, 0);
         table.Put(0x4E82, 0);
         table.Put(0x5674, 0);
         table.Put(0x5F69, 0);
         table.Put(0x5C06, 0);
         table.Put(0x7AEE, 0);
         table.Put(0x5DBA, 0);
         table.Put(0x5F62, 0);
         table.Put(0x6756, 0);
         table.Put(0x7C92, 0);
         table.Put(0x6753, 0);
         table.Put(0x3D96, 0);
         table.Put(0x393A, 0);
         table.Put(0x8D77, 0);
         table.Put(0x4227, 0);
         table.Put(0x5DB2, 0);
         table.Put(0x79EB, 0);
         table.Put(0x4CCE, 0);
         table.Put(0x674E, 0);
         table.Put(0x349E, 0);
         table.Put(0x5668, 0);
         table.Put(0x5306, 0);
         table.Put(0x7039, 0);
         table.Put(0x3A2E, 0);
         table.Put(0x5305, 0);
         table.Put(0x54BD, 0);
         table.Put(0x43D9, 0);
         table.Put(0x8910, 0);
         table.Put(0x43D5, 0);
         table.Put(0x5F53, 0);
         table.Put(0x285D2, 0);
         table.Put(0x6B9F, 0);
         table.Put(0x738B, 0);
         table.Put(0x26B3C, 0);
         table.Put(0x7C7B, 0);
         table.Put(0x26247, 0);
         table.Put(0x0313, 0);
         table.Put(0x7387, 0);
         table.Put(0x5651, 0);
         table.Put(0x23D1E, 0);
         table.Put(0x456B, 0);
         table.Put(0x7ACB, 0);
         table.Put(0x23ED1, 0);
         table.Put(0x82BD, 0);
         table.Put(0x391C, 0);
         table.Put(0x8103, 0);
         table.Put(0x24FB8, 0);
         table.Put(0x701E, 0);
         table.Put(0x54A2, 0);
         table.Put(0x701B, 0);
         table.Put(0x737A, 0);
         table.Put(0x4202, 0);
         table.Put(0x71D0, 0);
         table.Put(0x79CA, 0);
         table.Put(0x4561, 0);
         table.Put(0x82B3, 0);
         table.Put(0x0301, 0);
         table.Put(0x82B1, 0);
         table.Put(0x0300, 0);
         table.Put(0x71CE, 0);
         table.Put(0x7375, 0);
         table.Put(0x455D, 0);
         table.Put(0x96F7, 0);
         table.Put(0x96F6, 0);
         table.Put(0x8457, 0);
         table.Put(0x22331, 0);
         table.Put(0x60E1, 0);
         table.Put(0x7C60, 0);
         table.Put(0x6721, 0);
         table.Put(0x57F4, 0);
         table.Put(0x26CD5, 0);
         table.Put(0x24FA1, 0);
         table.Put(0x6B79, 0);
         table.Put(0x6B77, 0);
         table.Put(0x7AB1, 0);
         table.Put(0x26228, 0);
         table.Put(0x671B, 0);
         table.Put(0x4E41, 0);
         table.Put(0x6B72, 0);
         table.Put(0x60D8, 0);
         table.Put(0x9094, 0);
         table.Put(0x5F22, 0);
         table.Put(0x6717, 0);
         table.Put(0x27667, 0);
         table.Put(0x8449, 0);
         table.Put(0x96E3, 0);
         table.Put(0x4E3D, 0);
         table.Put(0x96E2, 0);
         table.Put(0x5197, 0);
         table.Put(0x9E1E, 0);
         table.Put(0x5195, 0);
         table.Put(0x5192, 0);
         table.Put(0x85FA, 0);
         table.Put(0x79AE, 0);
         table.Put(0x908F, 0);
         table.Put(0x4E39, 0);
         table.Put(0x25133, 0);
         table.Put(0x4E38, 0);
         table.Put(0x4E32, 0);
         table.Put(0x843D, 0);
         table.Put(0x518D, 0);
         table.Put(0x60C7, 0);
         table.Put(0x291DF, 0);
         table.Put(0x6700, 0);
         table.Put(0x5180, 0);
         table.Put(0x24C92, 0);
         table.Put(0x7C3E, 0);
         table.Put(0x907C, 0);
         table.Put(0x4E26, 0);
         table.Put(0x7DF4, 0);
         table.Put(0x7F9A, 0);
         table.Put(0x6B54, 0);
         table.Put(0x21B18, 0);
         table.Put(0x57CE, 0);
         table.Put(0x2003, 0);
         table.Put(0x2002, 0);
         table.Put(0x4096, 0);
         table.Put(0x5973, 0);
         table.Put(0x8ED4, 0);
         table.Put(0x2872E, 0);
         table.Put(0x8D1B, 0);
         table.Put(0x5F04, 0);
         table.Put(0x452B, 0);
         table.Put(0x625D, 0);
         table.Put(0x7F95, 0);
         table.Put(0x9072, 0);
         table.Put(0x20A2C, 0);
         table.Put(0x96C3, 0);
         table.Put(0x5177, 0);
         table.Put(0x8786, 0);
         table.Put(0x25119, 0);
         table.Put(0x3D33, 0);
         table.Put(0x5A66, 0);
         table.Put(0x2A600, 0);
         table.Put(0x5A62, 0);
         table.Put(0x8ECA, 0);
         table.Put(0x68A8, 0);
         table.Put(0x27F2F, 0);
         table.Put(0x516D, 0);
         table.Put(0x5606, 0);
         table.Put(0x5962, 0);
         table.Put(0x96B8, 0);
         table.Put(0x985E, 0);
         table.Put(0x7F85, 0);
         table.Put(0x5169, 0);
         table.Put(0x8779, 0);
         table.Put(0x4E0D, 0);
         table.Put(0x5168, 0);
         table.Put(0x5167, 0);
         table.Put(0x85CD, 0);
         table.Put(0x5164, 0);
         table.Put(0x8D08, 0);
         table.Put(0x6E9C, 0);
         table.Put(0x20122, 0);
         table.Put(0x732A, 0);
         table.Put(0x4FBF, 0);
         table.Put(0x7F7A, 0);
         table.Put(0x25BAB, 0);
         table.Put(0x4FBB, 0);
         table.Put(0x24814, 0);
         table.Put(0x876B, 0);
         table.Put(0x5954, 0);
         table.Put(0x46C7, 0);
         table.Put(0x5951, 0);
         table.Put(0x7F79, 0);
         table.Put(0x96A3, 0);
         table.Put(0x7F72, 0);
         table.Put(0x6CE5, 0);
         table.Put(0x5154, 0);
         table.Put(0x3781, 0);
         table.Put(0x5BFF, 0);
         table.Put(0x46BE, 0);
         table.Put(0x6599, 0);
         table.Put(0x7DC7, 0);
         table.Put(0x99FE, 0);
         table.Put(0x6234, 0);
         table.Put(0x4FAE, 0);
         table.Put(0x5948, 0);
         table.Put(0x514D, 0);
         table.Put(0x5944, 0);
         table.Put(0x6B21, 0);
         table.Put(0x2219F, 0);
         table.Put(0x5BF3, 0);
         table.Put(0x74CA, 0);
         table.Put(0x7DBE, 0);
         table.Put(0x622E, 0);
         table.Put(0x63E4, 0);
         table.Put(0x983B, 0);
         table.Put(0x99F1, 0);
         table.Put(0x5145, 0);
         table.Put(0x52FA, 0);
         table.Put(0x5BEE, 0);
         table.Put(0x5140, 0);
         table.Put(0x3EB8, 0);
         table.Put(0x549E, 0);
         table.Put(0x52F5, 0);
         table.Put(0x6CCD, 0);
         table.Put(0x7669, 0);
         table.Put(0x6CCC, 0);
         table.Put(0x5BE7, 0);
         table.Put(0x26523, 0);
         table.Put(0x9038, 0);
         table.Put(0x27966, 0);
         table.Put(0x621B, 0);
         table.Put(0x6E6E, 0);
         table.Put(0x5A27, 0);
         table.Put(0x3EAC, 0);
         table.Put(0x88FA, 0);
         table.Put(0x9829, 0);
         table.Put(0x6578, 0);
         table.Put(0x22183, 0);
         table.Put(0x88F8, 0);
         table.Put(0x6CBF, 0);
         table.Put(0x7DA0, 0);
         table.Put(0x6210, 0);
         table.Put(0x6B04, 0);
         table.Put(0x52E4, 0);
         table.Put(0x5BD8, 0);
         table.Put(0x216EA, 0);
         table.Put(0x4046, 0);
         table.Put(0x5922, 0);
         table.Put(0x5D7C, 0);
         table.Put(0x5A1B, 0);
         table.Put(0x9023, 0);
         table.Put(0x63C5, 0);
         table.Put(0x63C4, 0);
         table.Put(0x656C, 0);
         table.Put(0x829D, 0);
         table.Put(0x52DE, 0);
         table.Put(0x24C36, 0);
         table.Put(0x591A, 0);
         table.Put(0x9818, 0);
         table.Put(0x8B8A, 0);
         table.Put(0x7F3E, 0);
         table.Put(0x26FB1, 0);
         table.Put(0x91D1, 0);
         table.Put(0x6200, 0);
         table.Put(0x4039, 0);
         table.Put(0x238A7, 0);
         table.Put(0x8291, 0);
         table.Put(0x52D2, 0);
         table.Put(0x88E1, 0);
         table.Put(0x5D6E, 0);
         table.Put(0x91CF, 0);
         table.Put(0x5BC3, 0);
         table.Put(0x2541D, 0);
         table.Put(0x49E6, 0);
         table.Put(0x8B80, 0);
         table.Put(0x7642, 0);
         table.Put(0x5D6B, 0);
         table.Put(0x91CC, 0);
         table.Put(0x980B, 0);
         table.Put(0x8728, 0);
         table.Put(0x99C2, 0);
         table.Put(0x88DE, 0);
         table.Put(0x828B, 0);
         table.Put(0x3B9D, 0);
         table.Put(0x6556, 0);
         table.Put(0x52C9, 0);
         table.Put(0x52C7, 0);
         table.Put(0x88D7, 0);
         table.Put(0x2A105, 0);
         table.Put(0x6FFE, 0);
         table.Put(0x5906, 0);
         table.Put(0x719C, 0);
         table.Put(0x63A9, 0);
         table.Put(0x654F, 0);
         table.Put(0x9C57, 0);
         table.Put(0x5468, 0);
         table.Put(0x88CF, 0);
         table.Put(0x63A0, 0);
         table.Put(0x798F, 0);
         table.Put(0x798E, 0);
         table.Put(0x798D, 0);
         table.Put(0x91B4, 0);
         table.Put(0x8279, 0);
         table.Put(0x5D50, 0);
         table.Put(0x7A81, 0);
         table.Put(0x870E, 0);
         table.Put(0x38E3, 0);
         table.Put(0x4018, 0);
         table.Put(0x52B3, 0);
         table.Put(0x6FEB, 0);
         table.Put(0x88C2, 0);
         table.Put(0x66F8, 0);
         table.Put(0x99A7, 0);
         table.Put(0x66F4, 0);
         table.Put(0x826F, 0);
         table.Put(0x6E2F, 0);
         table.Put(0x9DFA, 0);
         table.Put(0x22BF1, 0);
         table.Put(0x9C40, 0);
         table.Put(0x761F, 0);
         table.Put(0x797F, 0);
         table.Put(0x761D, 0);
         table.Put(0x5EFE, 0);
         table.Put(0x5D43, 0);
         table.Put(0x934A, 0);
         table.Put(0x4AB2, 0);
         table.Put(0x9F9C, 0);
         table.Put(0x8B58, 0);
         table.Put(0x52A3, 0);
         table.Put(0x4008, 0);
         table.Put(0x6094, 0);
         table.Put(0x7610, 0);
         table.Put(0x688E, 0);
         table.Put(0x216A8, 0);
         table.Put(0x5448, 0);
         table.Put(0x80B2, 0);
         table.Put(0x233D5, 0);
         table.Put(0x6E1A, 0);
         table.Put(0x5442, 0);
         table.Put(0x5EEC, 0);
         table.Put(0x02B9, 0);
         table.Put(0x6885, 0);
         table.Put(0x38C7, 0);
         table.Put(0x9F8E, 0);
         table.Put(0x80AD, 0);
         table.Put(0x9F8D, 0);
         table.Put(0x6881, 0);
         table.Put(0x4359, 0);
         table.Put(0x716E, 0);
         table.Put(0x7965, 0);
         table.Put(0x23CBC, 0);
         table.Put(0x5438, 0);
         table.Put(0x6081, 0);
         table.Put(0x6FC6, 0);
         table.Put(0x261DA, 0);
         table.Put(0x233C3, 0);
         table.Put(0x795E, 0);
         table.Put(0x795D, 0);
         table.Put(0x250F3, 0);
         table.Put(0x250F2, 0);
         table.Put(0x8B39, 0);
         table.Put(0x5ED9, 0);
         table.Put(0x578B, 0);
         table.Put(0x55E2, 0);
         table.Put(0x7956, 0);
         table.Put(0x7A4F, 0);
         table.Put(0x9686, 0);
         table.Put(0x5ED3, 0);
         table.Put(0x5ED2, 0);
         table.Put(0x66C6, 0);
         table.Put(0x7950, 0);
         table.Put(0x7A4A, 0);
         table.Put(0x5D19, 0);
         table.Put(0x83F1, 0);
         table.Put(0x77A7, 0);
         table.Put(0x5ECA, 0);
         table.Put(0x967C, 0);
         table.Put(0x83EF, 0);
         table.Put(0x3B49, 0);
         table.Put(0x7A40, 0);
         table.Put(0x4F8B, 0);
         table.Put(0x541D, 0);
         table.Put(0x7949, 0);
         table.Put(0x5EC9, 0);
         table.Put(0x7948, 0);
         table.Put(0x9678, 0);
         table.Put(0x4334, 0);
         table.Put(0x9675, 0);
         table.Put(0x4F86, 0);
         table.Put(0x66B4, 0);
         table.Put(0x83E7, 0);
         table.Put(0x7149, 0);
         table.Put(0x4F80, 0);
         table.Put(0x7145, 0);
         table.Put(0x8CD3, 0);
         table.Put(0x793E, 0);
         table.Put(0x72FC, 0);
         table.Put(0x793C, 0);
         table.Put(0x9DB4, 0);
         table.Put(0x540F, 0);
         table.Put(0x6852, 0);
         table.Put(0x83DC, 0);
         table.Put(0x55C2, 0);
         table.Put(0x5EB6, 0);
         table.Put(0x55C0, 0);
         table.Put(0x5EB3, 0);
         table.Put(0x9304, 0);
         table.Put(0x5EB0, 0);
         table.Put(0x219C8, 0);
         table.Put(0x5406, 0);
         table.Put(0x8CC8, 0);
         table.Put(0x7498, 0);
         table.Put(0x208DE, 0);
         table.Put(0x8CC2, 0);
         table.Put(0x8CC1, 0);
         table.Put(0x792A, 0);
         table.Put(0x83CC, 0);
         table.Put(0x83CA, 0);
         table.Put(0x55B3, 0);
         table.Put(0x5EA6, 0);
         table.Put(0x8B01, 0);
         table.Put(0x83C9, 0);
         table.Put(0x7A1C, 0);
         table.Put(0x9F43, 0);
         table.Put(0x7489, 0);
         table.Put(0x4F60, 0);
         table.Put(0x27ED3, 0);
         table.Put(0x55AB, 0);
         table.Put(0x7485, 0);
         table.Put(0x26C36, 0);
         table.Put(0x61F6, 0);
         table.Put(0x964D, 0);
         table.Put(0x964B, 0);
         table.Put(0x61F2, 0);
         table.Put(0x3B19, 0);
         table.Put(0x8204, 0);
         table.Put(0x83BD, 0);
         table.Put(0x69EA, 0);
         table.Put(0x2633E, 0);
         table.Put(0x8564, 0);
         table.Put(0x9F3B, 0);
         table.Put(0x8201, 0);
         table.Put(0x7BC9, 0);
         table.Put(0x8CAB, 0);
         table.Put(0x97FF, 0);
         table.Put(0x7BC6, 0);
         table.Put(0x24608, 0);
         table.Put(0x4301, 0);
         table.Put(0x20B63, 0);
         table.Put(0x6C88, 0);
         table.Put(0x7BC0, 0);
         table.Put(0x6ADB, 0);
         table.Put(0x7471, 0);
         table.Put(0x7D63, 0);
         table.Put(0x3B08, 0);
         table.Put(0x29145, 0);
         table.Put(0x83AD, 0);
         table.Put(0x58F7, 0);
         table.Put(0x6AD3, 0);
         table.Put(0x25249, 0);
         table.Put(0x58F2, 0);
         table.Put(0x72C0, 0);
         table.Put(0x61DE, 0);
         table.Put(0x681F, 0);
         table.Put(0x7D5B, 0);
         table.Put(0x6383, 0);
         table.Put(0x7469, 0);
         table.Put(0x58EE, 0);
         table.Put(0x529B, 0);
         table.Put(0x2A291, 0);
         table.Put(0x9199, 0);
         table.Put(0x264DA, 0);
         table.Put(0x962E, 0);
         table.Put(0x6817, 0);
         table.Put(0x601C, 0);
         table.Put(0x637B, 0);
         table.Put(0x29496, 0);
         table.Put(0x97E0, 0);
         table.Put(0x21DE6, 0);
         table.Put(0x21DE4, 0);
         table.Put(0x5B85, 0);
         table.Put(0x745C, 0);
         table.Put(0x97DB, 0);
         table.Put(0x6012, 0);
         table.Put(0x50E7, 0);
         table.Put(0x6C67, 0);
         table.Put(0x9F16, 0);
         table.Put(0x58DF, 0);
         table.Put(0x72AF, 0);
         table.Put(0x5289, 0);
         table.Put(0x9F0F, 0);
         table.Put(0x58D8, 0);
         table.Put(0x214E4, 0);
         table.Put(0x25CD0, 0);
         table.Put(0x50DA, 0);
         table.Put(0x3FFC, 0);
         table.Put(0x6368, 0);
         table.Put(0x4635, 0);
         table.Put(0x4995, 0);
         table.Put(0x2A0CE, 0);
         table.Put(0x9F05, 0);
         table.Put(0x5717, 0);
         table.Put(0x9A6A, 0);
         table.Put(0x5716, 0);
         table.Put(0x7447, 0);
         table.Put(0x86E2, 0);
         table.Put(0x236A3, 0);
         table.Put(0x23AFA, 0);
         table.Put(0x6AA8, 0);
         table.Put(0x61B2, 0);
         table.Put(0x5277, 0);
         table.Put(0x50CF, 0);
         table.Put(0x36FC, 0);
         table.Put(0x6C4E, 0);
         table.Put(0x808B, 0);
         table.Put(0x5272, 0);
         table.Put(0x7D2F, 0);
         table.Put(0x61AF, 0);
         table.Put(0x916A, 0);
         table.Put(0x69A3, 0);
         table.Put(0x6350, 0);
         table.Put(0x4A76, 0);
         table.Put(0x61A4, 0);
         table.Put(0x6DF9, 0);
         table.Put(0x807E, 0);
         table.Put(0x7D22, 0);
         table.Put(0x36EE, 0);
         table.Put(0x8516, 0);
         table.Put(0x58B3, 0);
         table.Put(0x2339C, 0);
         table.Put(0x75E2, 0);
         table.Put(0x778B, 0);
         table.Put(0x4A6E, 0);
         table.Put(0x8070, 0);
         table.Put(0x8FB6, 0);
         table.Put(0x6DEA, 0);
         table.Put(0x58AC, 0);
         table.Put(0x23393, 0);
         table.Put(0x7422, 0);
         table.Put(0x8FB0, 0);
         table.Put(0x633D, 0);
         table.Put(0x806F, 0);
         table.Put(0x669C, 0);
         table.Put(0x7D10, 0);
         table.Put(0x58A8, 0);
         table.Put(0x8863, 0);
         table.Put(0x8860, 0);
         table.Put(0x26F2C, 0);
         table.Put(0x00C5, 0);
         table.Put(0x6691, 0);
         table.Put(0x387C, 0);
         table.Put(0x8060, 0);
         table.Put(0x6DDA, 0);
         table.Put(0x5B3E, 0);
         table.Put(0x3515, 0);
         table.Put(0x270D2, 0);
         table.Put(0x5246, 0);
         table.Put(0x7D00, 0);
         return(table);
     }
 }
예제 #3
0
        /// <summary>
        /// Normalize given expression.
        /// </summary>
        ///
        /// <param name="input">- expression to normalize</param>
        /// <returns>normalized expression.</returns>
        static internal String Normalize(String input)
        {
            char[] inputChars           = input.ToCharArray();
            int    inputLength          = inputChars.Length;
            int    resCodePointsIndex   = 0;
            int    inputCodePointsIndex = 0;
            int    decompHangulIndex    = 0;

            //codePoints of input
            int[] inputCodePoints = new int[inputLength];

            //result of canonical decomposition of input
            int[] resCodePoints = new int[inputLength * MAX_DECOMPOSITION_LENGTH];

            //current symbol's codepoint
            int ch_0;

            //current symbol's decomposition
            int[] decomp;

            //result of canonical and Hangul decomposition of input
            int[] decompHangul;

            //result of canonical decomposition of input in UTF-16 encoding
            StringBuilder result = new StringBuilder();

            decompTable           = ILOG.J2CsMapping.RegEx.HashDecompositions.GetHashDecompositions();
            canonClassesTable     = ILOG.J2CsMapping.RegEx.CanClasses.GetHashCanClasses();
            canonClassesTableSize = canonClassesTable.size;
            singleDecompTable     = ILOG.J2CsMapping.RegEx.SingleDecompositions.GetHashSingleDecompositions();
            singleDecompTableSize = singleDecompTable.size;

            for (int i = 0; i < inputLength; i += Character.CharCount(ch_0))
            {
                ch_0 = Character.CodePointAt(inputChars, i);
                inputCodePoints[inputCodePointsIndex++] = ch_0;
            }

            /*
             * Canonical decomposition based on mappings in decompTable
             */
            for (int i_1 = 0; i_1 < inputCodePointsIndex; i_1++)
            {
                ch_0 = inputCodePoints[i_1];

                decomp = Lexer.GetDecomposition(ch_0);
                if (decomp == null)
                {
                    resCodePoints[resCodePointsIndex++] = ch_0;
                }
                else
                {
                    int curSymbDecompLength = decomp.Length;

                    for (int j = 0; j < curSymbDecompLength; j++)
                    {
                        resCodePoints[resCodePointsIndex++] = decomp[j];
                    }
                }
            }

            /*
             * Canonical ordering.
             * See http://www.unicode.org/reports/tr15/#Decomposition for
             * details
             */
            resCodePoints = Lexer.GetCanonicalOrder(resCodePoints,
                                                    resCodePointsIndex);

            /*
             * Decomposition for Hangul syllables.
             * See http://www.unicode.org/reports/tr15/#Hangul for
             * details
             */
            decompHangul = new int[resCodePoints.Length];

            for (int i_2 = 0; i_2 < resCodePointsIndex; i_2++)
            {
                int curSymb = resCodePoints[i_2];

                decomp = GetHangulDecomposition(curSymb);
                if (decomp == null)
                {
                    decompHangul[decompHangulIndex++] = curSymb;
                }
                else
                {
                    /*
                     * Note that Hangul decompositions have length that is
                     * equal 2 or 3.
                     */
                    decompHangul[decompHangulIndex++] = decomp[0];
                    decompHangul[decompHangulIndex++] = decomp[1];
                    if (decomp.Length == 3)
                    {
                        decompHangul[decompHangulIndex++] = decomp[2];
                    }
                }
            }

            /*
             * Translating into UTF-16 encoding
             */
            for (int i_3 = 0; i_3 < decompHangulIndex; i_3++)
            {
                result.Append(Character.ToChars(decompHangul[i_3]));
            }

            return(result.ToString());
        }