JAL-1807 still testing
[jalviewjs.git] / unused / com / stevesoft / pat / CaseMgr.java
index 280e95d..5df8d22 100644 (file)
-//
-// This software is now distributed according to
-// the Lesser Gnu Public License.  Please see
-// http://www.gnu.org/copyleft/lesser.txt for
-// the details.
-//    -- Happy Computing!
-//
-package com.stevesoft.pat;
-
-/**
- * Encapsulates the Unicode definitions of Upper, Lower, and Title case as
- * defined by <a href="http://www.unicode.org"> unicode.org</a>.
- * <p>
- * The performance of the methods found in String and Character is better, but
- * these methods work both in java 1.0 and 1.1. If it is desirable, either to
- * gain a slight performance increase or to accomodate application specific
- * modifications to the definitions of upper, lower, and title case then it
- * should be a straightforward task to substitute your own methods for these.
- */
-final public class CaseMgr
-{
-  final static boolean java_1_0 = false;
-
-  /** Convert a character to upper case . */
-  public static char toUpperCase(char c)
-  {
-    if (java_1_0)
-    {
-      int ret = (int) c;
-      switch (c)
-      {
-      case 97:
-        ret = 65;
-        break;
-      case 98:
-        ret = 66;
-        break;
-      case 99:
-        ret = 67;
-        break;
-      case 100:
-        ret = 68;
-        break;
-      case 101:
-        ret = 69;
-        break;
-      case 102:
-        ret = 70;
-        break;
-      case 103:
-        ret = 71;
-        break;
-      case 104:
-        ret = 72;
-        break;
-      case 105:
-        ret = 73;
-        break;
-      case 106:
-        ret = 74;
-        break;
-      case 107:
-        ret = 75;
-        break;
-      case 108:
-        ret = 76;
-        break;
-      case 109:
-        ret = 77;
-        break;
-      case 110:
-        ret = 78;
-        break;
-      case 111:
-        ret = 79;
-        break;
-      case 112:
-        ret = 80;
-        break;
-      case 113:
-        ret = 81;
-        break;
-      case 114:
-        ret = 82;
-        break;
-      case 115:
-        ret = 83;
-        break;
-      case 116:
-        ret = 84;
-        break;
-      case 117:
-        ret = 85;
-        break;
-      case 118:
-        ret = 86;
-        break;
-      case 119:
-        ret = 87;
-        break;
-      case 120:
-        ret = 88;
-        break;
-      case 121:
-        ret = 89;
-        break;
-      case 122:
-        ret = 90;
-        break;
-      case 224:
-        ret = 192;
-        break;
-      case 225:
-        ret = 193;
-        break;
-      case 226:
-        ret = 194;
-        break;
-      case 227:
-        ret = 195;
-        break;
-      case 228:
-        ret = 196;
-        break;
-      case 229:
-        ret = 197;
-        break;
-      case 230:
-        ret = 198;
-        break;
-      case 231:
-        ret = 199;
-        break;
-      case 232:
-        ret = 200;
-        break;
-      case 233:
-        ret = 201;
-        break;
-      case 234:
-        ret = 202;
-        break;
-      case 235:
-        ret = 203;
-        break;
-      case 236:
-        ret = 204;
-        break;
-      case 237:
-        ret = 205;
-        break;
-      case 238:
-        ret = 206;
-        break;
-      case 239:
-        ret = 207;
-        break;
-      case 240:
-        ret = 208;
-        break;
-      case 241:
-        ret = 209;
-        break;
-      case 242:
-        ret = 210;
-        break;
-      case 243:
-        ret = 211;
-        break;
-      case 244:
-        ret = 212;
-        break;
-      case 245:
-        ret = 213;
-        break;
-      case 246:
-        ret = 214;
-        break;
-      case 248:
-        ret = 216;
-        break;
-      case 249:
-        ret = 217;
-        break;
-      case 250:
-        ret = 218;
-        break;
-      case 251:
-        ret = 219;
-        break;
-      case 252:
-        ret = 220;
-        break;
-      case 253:
-        ret = 221;
-        break;
-      case 254:
-        ret = 222;
-        break;
-      case 255:
-        ret = 376;
-        break;
-      case 257:
-        ret = 256;
-        break;
-      case 259:
-        ret = 258;
-        break;
-      case 261:
-        ret = 260;
-        break;
-      case 263:
-        ret = 262;
-        break;
-      case 265:
-        ret = 264;
-        break;
-      case 267:
-        ret = 266;
-        break;
-      case 269:
-        ret = 268;
-        break;
-      case 271:
-        ret = 270;
-        break;
-      case 273:
-        ret = 272;
-        break;
-      case 275:
-        ret = 274;
-        break;
-      case 277:
-        ret = 276;
-        break;
-      case 279:
-        ret = 278;
-        break;
-      case 281:
-        ret = 280;
-        break;
-      case 283:
-        ret = 282;
-        break;
-      case 285:
-        ret = 284;
-        break;
-      case 287:
-        ret = 286;
-        break;
-      case 289:
-        ret = 288;
-        break;
-      case 291:
-        ret = 290;
-        break;
-      case 293:
-        ret = 292;
-        break;
-      case 295:
-        ret = 294;
-        break;
-      case 297:
-        ret = 296;
-        break;
-      case 299:
-        ret = 298;
-        break;
-      case 301:
-        ret = 300;
-        break;
-      case 303:
-        ret = 302;
-        break;
-      case 305:
-        ret = 73;
-        break;
-      case 307:
-        ret = 306;
-        break;
-      case 309:
-        ret = 308;
-        break;
-      case 311:
-        ret = 310;
-        break;
-      case 314:
-        ret = 313;
-        break;
-      case 316:
-        ret = 315;
-        break;
-      case 318:
-        ret = 317;
-        break;
-      case 320:
-        ret = 319;
-        break;
-      case 322:
-        ret = 321;
-        break;
-      case 324:
-        ret = 323;
-        break;
-      case 326:
-        ret = 325;
-        break;
-      case 328:
-        ret = 327;
-        break;
-      case 331:
-        ret = 330;
-        break;
-      case 333:
-        ret = 332;
-        break;
-      case 335:
-        ret = 334;
-        break;
-      case 337:
-        ret = 336;
-        break;
-      case 339:
-        ret = 338;
-        break;
-      case 341:
-        ret = 340;
-        break;
-      case 343:
-        ret = 342;
-        break;
-      case 345:
-        ret = 344;
-        break;
-      case 347:
-        ret = 346;
-        break;
-      case 349:
-        ret = 348;
-        break;
-      case 351:
-        ret = 350;
-        break;
-      case 353:
-        ret = 352;
-        break;
-      case 355:
-        ret = 354;
-        break;
-      case 357:
-        ret = 356;
-        break;
-      case 359:
-        ret = 358;
-        break;
-      case 361:
-        ret = 360;
-        break;
-      case 363:
-        ret = 362;
-        break;
-      case 365:
-        ret = 364;
-        break;
-      case 367:
-        ret = 366;
-        break;
-      case 369:
-        ret = 368;
-        break;
-      case 371:
-        ret = 370;
-        break;
-      case 373:
-        ret = 372;
-        break;
-      case 375:
-        ret = 374;
-        break;
-      case 378:
-        ret = 377;
-        break;
-      case 380:
-        ret = 379;
-        break;
-      case 382:
-        ret = 381;
-        break;
-      case 383:
-        ret = 83;
-        break;
-      case 387:
-        ret = 386;
-        break;
-      case 389:
-        ret = 388;
-        break;
-      case 392:
-        ret = 391;
-        break;
-      case 396:
-        ret = 395;
-        break;
-      case 402:
-        ret = 401;
-        break;
-      case 409:
-        ret = 408;
-        break;
-      case 417:
-        ret = 416;
-        break;
-      case 419:
-        ret = 418;
-        break;
-      case 421:
-        ret = 420;
-        break;
-      case 424:
-        ret = 423;
-        break;
-      case 429:
-        ret = 428;
-        break;
-      case 432:
-        ret = 431;
-        break;
-      case 436:
-        ret = 435;
-        break;
-      case 438:
-        ret = 437;
-        break;
-      case 441:
-        ret = 440;
-        break;
-      case 445:
-        ret = 444;
-        break;
-      case 453:
-        ret = 452;
-        break;
-      case 454:
-        ret = 452;
-        break;
-      case 456:
-        ret = 455;
-        break;
-      case 457:
-        ret = 455;
-        break;
-      case 459:
-        ret = 458;
-        break;
-      case 460:
-        ret = 458;
-        break;
-      case 462:
-        ret = 461;
-        break;
-      case 464:
-        ret = 463;
-        break;
-      case 466:
-        ret = 465;
-        break;
-      case 468:
-        ret = 467;
-        break;
-      case 470:
-        ret = 469;
-        break;
-      case 472:
-        ret = 471;
-        break;
-      case 474:
-        ret = 473;
-        break;
-      case 476:
-        ret = 475;
-        break;
-      case 479:
-        ret = 478;
-        break;
-      case 481:
-        ret = 480;
-        break;
-      case 483:
-        ret = 482;
-        break;
-      case 485:
-        ret = 484;
-        break;
-      case 487:
-        ret = 486;
-        break;
-      case 489:
-        ret = 488;
-        break;
-      case 491:
-        ret = 490;
-        break;
-      case 493:
-        ret = 492;
-        break;
-      case 495:
-        ret = 494;
-        break;
-      case 498:
-        ret = 497;
-        break;
-      case 499:
-        ret = 497;
-        break;
-      case 501:
-        ret = 500;
-        break;
-      case 507:
-        ret = 506;
-        break;
-      case 509:
-        ret = 508;
-        break;
-      case 511:
-        ret = 510;
-        break;
-      case 513:
-        ret = 512;
-        break;
-      case 515:
-        ret = 514;
-        break;
-      case 517:
-        ret = 516;
-        break;
-      case 519:
-        ret = 518;
-        break;
-      case 521:
-        ret = 520;
-        break;
-      case 523:
-        ret = 522;
-        break;
-      case 525:
-        ret = 524;
-        break;
-      case 527:
-        ret = 526;
-        break;
-      case 529:
-        ret = 528;
-        break;
-      case 531:
-        ret = 530;
-        break;
-      case 533:
-        ret = 532;
-        break;
-      case 535:
-        ret = 534;
-        break;
-      case 595:
-        ret = 385;
-        break;
-      case 596:
-        ret = 390;
-        break;
-      case 598:
-        ret = 393;
-        break;
-      case 599:
-        ret = 394;
-        break;
-      case 600:
-        ret = 398;
-        break;
-      case 601:
-        ret = 399;
-        break;
-      case 603:
-        ret = 400;
-        break;
-      case 608:
-        ret = 403;
-        break;
-      case 611:
-        ret = 404;
-        break;
-      case 616:
-        ret = 407;
-        break;
-      case 617:
-        ret = 406;
-        break;
-      case 623:
-        ret = 412;
-        break;
-      case 626:
-        ret = 413;
-        break;
-      case 643:
-        ret = 425;
-        break;
-      case 648:
-        ret = 430;
-        break;
-      case 650:
-        ret = 433;
-        break;
-      case 651:
-        ret = 434;
-        break;
-      case 658:
-        ret = 439;
-        break;
-      case 940:
-        ret = 902;
-        break;
-      case 941:
-        ret = 904;
-        break;
-      case 942:
-        ret = 905;
-        break;
-      case 943:
-        ret = 906;
-        break;
-      case 945:
-        ret = 913;
-        break;
-      case 946:
-        ret = 914;
-        break;
-      case 947:
-        ret = 915;
-        break;
-      case 948:
-        ret = 916;
-        break;
-      case 949:
-        ret = 917;
-        break;
-      case 950:
-        ret = 918;
-        break;
-      case 951:
-        ret = 919;
-        break;
-      case 952:
-        ret = 920;
-        break;
-      case 953:
-        ret = 921;
-        break;
-      case 954:
-        ret = 922;
-        break;
-      case 955:
-        ret = 923;
-        break;
-      case 956:
-        ret = 924;
-        break;
-      case 957:
-        ret = 925;
-        break;
-      case 958:
-        ret = 926;
-        break;
-      case 959:
-        ret = 927;
-        break;
-      case 960:
-        ret = 928;
-        break;
-      case 961:
-        ret = 929;
-        break;
-      case 963:
-        ret = 931;
-        break;
-      case 964:
-        ret = 932;
-        break;
-      case 965:
-        ret = 933;
-        break;
-      case 966:
-        ret = 934;
-        break;
-      case 967:
-        ret = 935;
-        break;
-      case 968:
-        ret = 936;
-        break;
-      case 969:
-        ret = 937;
-        break;
-      case 970:
-        ret = 938;
-        break;
-      case 971:
-        ret = 939;
-        break;
-      case 972:
-        ret = 908;
-        break;
-      case 973:
-        ret = 910;
-        break;
-      case 974:
-        ret = 911;
-        break;
-      case 976:
-        ret = 914;
-        break;
-      case 977:
-        ret = 920;
-        break;
-      case 981:
-        ret = 934;
-        break;
-      case 982:
-        ret = 928;
-        break;
-      case 995:
-        ret = 994;
-        break;
-      case 997:
-        ret = 996;
-        break;
-      case 999:
-        ret = 998;
-        break;
-      case 1001:
-        ret = 1000;
-        break;
-      case 1003:
-        ret = 1002;
-        break;
-      case 1005:
-        ret = 1004;
-        break;
-      case 1007:
-        ret = 1006;
-        break;
-      case 1008:
-        ret = 922;
-        break;
-      case 1009:
-        ret = 929;
-        break;
-      case 1072:
-        ret = 1040;
-        break;
-      case 1073:
-        ret = 1041;
-        break;
-      case 1074:
-        ret = 1042;
-        break;
-      case 1075:
-        ret = 1043;
-        break;
-      case 1076:
-        ret = 1044;
-        break;
-      case 1077:
-        ret = 1045;
-        break;
-      case 1078:
-        ret = 1046;
-        break;
-      case 1079:
-        ret = 1047;
-        break;
-      case 1080:
-        ret = 1048;
-        break;
-      case 1081:
-        ret = 1049;
-        break;
-      case 1082:
-        ret = 1050;
-        break;
-      case 1083:
-        ret = 1051;
-        break;
-      case 1084:
-        ret = 1052;
-        break;
-      case 1085:
-        ret = 1053;
-        break;
-      case 1086:
-        ret = 1054;
-        break;
-      case 1087:
-        ret = 1055;
-        break;
-      case 1088:
-        ret = 1056;
-        break;
-      case 1089:
-        ret = 1057;
-        break;
-      case 1090:
-        ret = 1058;
-        break;
-      case 1091:
-        ret = 1059;
-        break;
-      case 1092:
-        ret = 1060;
-        break;
-      case 1093:
-        ret = 1061;
-        break;
-      case 1094:
-        ret = 1062;
-        break;
-      case 1095:
-        ret = 1063;
-        break;
-      case 1096:
-        ret = 1064;
-        break;
-      case 1097:
-        ret = 1065;
-        break;
-      case 1098:
-        ret = 1066;
-        break;
-      case 1099:
-        ret = 1067;
-        break;
-      case 1100:
-        ret = 1068;
-        break;
-      case 1101:
-        ret = 1069;
-        break;
-      case 1102:
-        ret = 1070;
-        break;
-      case 1103:
-        ret = 1071;
-        break;
-      case 1105:
-        ret = 1025;
-        break;
-      case 1106:
-        ret = 1026;
-        break;
-      case 1107:
-        ret = 1027;
-        break;
-      case 1108:
-        ret = 1028;
-        break;
-      case 1109:
-        ret = 1029;
-        break;
-      case 1110:
-        ret = 1030;
-        break;
-      case 1111:
-        ret = 1031;
-        break;
-      case 1112:
-        ret = 1032;
-        break;
-      case 1113:
-        ret = 1033;
-        break;
-      case 1114:
-        ret = 1034;
-        break;
-      case 1115:
-        ret = 1035;
-        break;
-      case 1116:
-        ret = 1036;
-        break;
-      case 1118:
-        ret = 1038;
-        break;
-      case 1119:
-        ret = 1039;
-        break;
-      case 1121:
-        ret = 1120;
-        break;
-      case 1123:
-        ret = 1122;
-        break;
-      case 1125:
-        ret = 1124;
-        break;
-      case 1127:
-        ret = 1126;
-        break;
-      case 1129:
-        ret = 1128;
-        break;
-      case 1131:
-        ret = 1130;
-        break;
-      case 1133:
-        ret = 1132;
-        break;
-      case 1135:
-        ret = 1134;
-        break;
-      case 1137:
-        ret = 1136;
-        break;
-      case 1139:
-        ret = 1138;
-        break;
-      case 1141:
-        ret = 1140;
-        break;
-      case 1143:
-        ret = 1142;
-        break;
-      case 1145:
-        ret = 1144;
-        break;
-      case 1147:
-        ret = 1146;
-        break;
-      case 1149:
-        ret = 1148;
-        break;
-      case 1151:
-        ret = 1150;
-        break;
-      case 1153:
-        ret = 1152;
-        break;
-      case 1169:
-        ret = 1168;
-        break;
-      case 1171:
-        ret = 1170;
-        break;
-      case 1173:
-        ret = 1172;
-        break;
-      case 1175:
-        ret = 1174;
-        break;
-      case 1177:
-        ret = 1176;
-        break;
-      case 1179:
-        ret = 1178;
-        break;
-      case 1181:
-        ret = 1180;
-        break;
-      case 1183:
-        ret = 1182;
-        break;
-      case 1185:
-        ret = 1184;
-        break;
-      case 1187:
-        ret = 1186;
-        break;
-      case 1189:
-        ret = 1188;
-        break;
-      case 1191:
-        ret = 1190;
-        break;
-      case 1193:
-        ret = 1192;
-        break;
-      case 1195:
-        ret = 1194;
-        break;
-      case 1197:
-        ret = 1196;
-        break;
-      case 1199:
-        ret = 1198;
-        break;
-      case 1201:
-        ret = 1200;
-        break;
-      case 1203:
-        ret = 1202;
-        break;
-      case 1205:
-        ret = 1204;
-        break;
-      case 1207:
-        ret = 1206;
-        break;
-      case 1209:
-        ret = 1208;
-        break;
-      case 1211:
-        ret = 1210;
-        break;
-      case 1213:
-        ret = 1212;
-        break;
-      case 1215:
-        ret = 1214;
-        break;
-      case 1218:
-        ret = 1217;
-        break;
-      case 1220:
-        ret = 1219;
-        break;
-      case 1224:
-        ret = 1223;
-        break;
-      case 1228:
-        ret = 1227;
-        break;
-      case 1233:
-        ret = 1232;
-        break;
-      case 1235:
-        ret = 1234;
-        break;
-      case 1237:
-        ret = 1236;
-        break;
-      case 1239:
-        ret = 1238;
-        break;
-      case 1241:
-        ret = 1240;
-        break;
-      case 1243:
-        ret = 1242;
-        break;
-      case 1245:
-        ret = 1244;
-        break;
-      case 1247:
-        ret = 1246;
-        break;
-      case 1249:
-        ret = 1248;
-        break;
-      case 1251:
-        ret = 1250;
-        break;
-      case 1253:
-        ret = 1252;
-        break;
-      case 1255:
-        ret = 1254;
-        break;
-      case 1257:
-        ret = 1256;
-        break;
-      case 1259:
-        ret = 1258;
-        break;
-      case 1263:
-        ret = 1262;
-        break;
-      case 1265:
-        ret = 1264;
-        break;
-      case 1267:
-        ret = 1266;
-        break;
-      case 1269:
-        ret = 1268;
-        break;
-      case 1273:
-        ret = 1272;
-        break;
-      case 1377:
-        ret = 1329;
-        break;
-      case 1378:
-        ret = 1330;
-        break;
-      case 1379:
-        ret = 1331;
-        break;
-      case 1380:
-        ret = 1332;
-        break;
-      case 1381:
-        ret = 1333;
-        break;
-      case 1382:
-        ret = 1334;
-        break;
-      case 1383:
-        ret = 1335;
-        break;
-      case 1384:
-        ret = 1336;
-        break;
-      case 1385:
-        ret = 1337;
-        break;
-      case 1386:
-        ret = 1338;
-        break;
-      case 1387:
-        ret = 1339;
-        break;
-      case 1388:
-        ret = 1340;
-        break;
-      case 1389:
-        ret = 1341;
-        break;
-      case 1390:
-        ret = 1342;
-        break;
-      case 1391:
-        ret = 1343;
-        break;
-      case 1392:
-        ret = 1344;
-        break;
-      case 1393:
-        ret = 1345;
-        break;
-      case 1394:
-        ret = 1346;
-        break;
-      case 1395:
-        ret = 1347;
-        break;
-      case 1396:
-        ret = 1348;
-        break;
-      case 1397:
-        ret = 1349;
-        break;
-      case 1398:
-        ret = 1350;
-        break;
-      case 1399:
-        ret = 1351;
-        break;
-      case 1400:
-        ret = 1352;
-        break;
-      case 1401:
-        ret = 1353;
-        break;
-      case 1402:
-        ret = 1354;
-        break;
-      case 1403:
-        ret = 1355;
-        break;
-      case 1404:
-        ret = 1356;
-        break;
-      case 1405:
-        ret = 1357;
-        break;
-      case 1406:
-        ret = 1358;
-        break;
-      case 1407:
-        ret = 1359;
-        break;
-      case 1408:
-        ret = 1360;
-        break;
-      case 1409:
-        ret = 1361;
-        break;
-      case 1410:
-        ret = 1362;
-        break;
-      case 1411:
-        ret = 1363;
-        break;
-      case 1412:
-        ret = 1364;
-        break;
-      case 1413:
-        ret = 1365;
-        break;
-      case 1414:
-        ret = 1366;
-        break;
-      case 7681:
-        ret = 7680;
-        break;
-      case 7683:
-        ret = 7682;
-        break;
-      case 7685:
-        ret = 7684;
-        break;
-      case 7687:
-        ret = 7686;
-        break;
-      case 7689:
-        ret = 7688;
-        break;
-      case 7691:
-        ret = 7690;
-        break;
-      case 7693:
-        ret = 7692;
-        break;
-      case 7695:
-        ret = 7694;
-        break;
-      case 7697:
-        ret = 7696;
-        break;
-      case 7699:
-        ret = 7698;
-        break;
-      case 7701:
-        ret = 7700;
-        break;
-      case 7703:
-        ret = 7702;
-        break;
-      case 7705:
-        ret = 7704;
-        break;
-      case 7707:
-        ret = 7706;
-        break;
-      case 7709:
-        ret = 7708;
-        break;
-      case 7711:
-        ret = 7710;
-        break;
-      case 7713:
-        ret = 7712;
-        break;
-      case 7715:
-        ret = 7714;
-        break;
-      case 7717:
-        ret = 7716;
-        break;
-      case 7719:
-        ret = 7718;
-        break;
-      case 7721:
-        ret = 7720;
-        break;
-      case 7723:
-        ret = 7722;
-        break;
-      case 7725:
-        ret = 7724;
-        break;
-      case 7727:
-        ret = 7726;
-        break;
-      case 7729:
-        ret = 7728;
-        break;
-      case 7731:
-        ret = 7730;
-        break;
-      case 7733:
-        ret = 7732;
-        break;
-      case 7735:
-        ret = 7734;
-        break;
-      case 7737:
-        ret = 7736;
-        break;
-      case 7739:
-        ret = 7738;
-        break;
-      case 7741:
-        ret = 7740;
-        break;
-      case 7743:
-        ret = 7742;
-        break;
-      case 7745:
-        ret = 7744;
-        break;
-      case 7747:
-        ret = 7746;
-        break;
-      case 7749:
-        ret = 7748;
-        break;
-      case 7751:
-        ret = 7750;
-        break;
-      case 7753:
-        ret = 7752;
-        break;
-      case 7755:
-        ret = 7754;
-        break;
-      case 7757:
-        ret = 7756;
-        break;
-      case 7759:
-        ret = 7758;
-        break;
-      case 7761:
-        ret = 7760;
-        break;
-      case 7763:
-        ret = 7762;
-        break;
-      case 7765:
-        ret = 7764;
-        break;
-      case 7767:
-        ret = 7766;
-        break;
-      case 7769:
-        ret = 7768;
-        break;
-      case 7771:
-        ret = 7770;
-        break;
-      case 7773:
-        ret = 7772;
-        break;
-      case 7775:
-        ret = 7774;
-        break;
-      case 7777:
-        ret = 7776;
-        break;
-      case 7779:
-        ret = 7778;
-        break;
-      case 7781:
-        ret = 7780;
-        break;
-      case 7783:
-        ret = 7782;
-        break;
-      case 7785:
-        ret = 7784;
-        break;
-      case 7787:
-        ret = 7786;
-        break;
-      case 7789:
-        ret = 7788;
-        break;
-      case 7791:
-        ret = 7790;
-        break;
-      case 7793:
-        ret = 7792;
-        break;
-      case 7795:
-        ret = 7794;
-        break;
-      case 7797:
-        ret = 7796;
-        break;
-      case 7799:
-        ret = 7798;
-        break;
-      case 7801:
-        ret = 7800;
-        break;
-      case 7803:
-        ret = 7802;
-        break;
-      case 7805:
-        ret = 7804;
-        break;
-      case 7807:
-        ret = 7806;
-        break;
-      case 7809:
-        ret = 7808;
-        break;
-      case 7811:
-        ret = 7810;
-        break;
-      case 7813:
-        ret = 7812;
-        break;
-      case 7815:
-        ret = 7814;
-        break;
-      case 7817:
-        ret = 7816;
-        break;
-      case 7819:
-        ret = 7818;
-        break;
-      case 7821:
-        ret = 7820;
-        break;
-      case 7823:
-        ret = 7822;
-        break;
-      case 7825:
-        ret = 7824;
-        break;
-      case 7827:
-        ret = 7826;
-        break;
-      case 7829:
-        ret = 7828;
-        break;
-      case 7841:
-        ret = 7840;
-        break;
-      case 7843:
-        ret = 7842;
-        break;
-      case 7845:
-        ret = 7844;
-        break;
-      case 7847:
-        ret = 7846;
-        break;
-      case 7849:
-        ret = 7848;
-        break;
-      case 7851:
-        ret = 7850;
-        break;
-      case 7853:
-        ret = 7852;
-        break;
-      case 7855:
-        ret = 7854;
-        break;
-      case 7857:
-        ret = 7856;
-        break;
-      case 7859:
-        ret = 7858;
-        break;
-      case 7861:
-        ret = 7860;
-        break;
-      case 7863:
-        ret = 7862;
-        break;
-      case 7865:
-        ret = 7864;
-        break;
-      case 7867:
-        ret = 7866;
-        break;
-      case 7869:
-        ret = 7868;
-        break;
-      case 7871:
-        ret = 7870;
-        break;
-      case 7873:
-        ret = 7872;
-        break;
-      case 7875:
-        ret = 7874;
-        break;
-      case 7877:
-        ret = 7876;
-        break;
-      case 7879:
-        ret = 7878;
-        break;
-      case 7881:
-        ret = 7880;
-        break;
-      case 7883:
-        ret = 7882;
-        break;
-      case 7885:
-        ret = 7884;
-        break;
-      case 7887:
-        ret = 7886;
-        break;
-      case 7889:
-        ret = 7888;
-        break;
-      case 7891:
-        ret = 7890;
-        break;
-      case 7893:
-        ret = 7892;
-        break;
-      case 7895:
-        ret = 7894;
-        break;
-      case 7897:
-        ret = 7896;
-        break;
-      case 7899:
-        ret = 7898;
-        break;
-      case 7901:
-        ret = 7900;
-        break;
-      case 7903:
-        ret = 7902;
-        break;
-      case 7905:
-        ret = 7904;
-        break;
-      case 7907:
-        ret = 7906;
-        break;
-      case 7909:
-        ret = 7908;
-        break;
-      case 7911:
-        ret = 7910;
-        break;
-      case 7913:
-        ret = 7912;
-        break;
-      case 7915:
-        ret = 7914;
-        break;
-      case 7917:
-        ret = 7916;
-        break;
-      case 7919:
-        ret = 7918;
-        break;
-      case 7921:
-        ret = 7920;
-        break;
-      case 7923:
-        ret = 7922;
-        break;
-      case 7925:
-        ret = 7924;
-        break;
-      case 7927:
-        ret = 7926;
-        break;
-      case 7929:
-        ret = 7928;
-        break;
-      case 7936:
-        ret = 7944;
-        break;
-      case 7937:
-        ret = 7945;
-        break;
-      case 7938:
-        ret = 7946;
-        break;
-      case 7939:
-        ret = 7947;
-        break;
-      case 7940:
-        ret = 7948;
-        break;
-      case 7941:
-        ret = 7949;
-        break;
-      case 7942:
-        ret = 7950;
-        break;
-      case 7943:
-        ret = 7951;
-        break;
-      case 7952:
-        ret = 7960;
-        break;
-      case 7953:
-        ret = 7961;
-        break;
-      case 7954:
-        ret = 7962;
-        break;
-      case 7955:
-        ret = 7963;
-        break;
-      case 7956:
-        ret = 7964;
-        break;
-      case 7957:
-        ret = 7965;
-        break;
-      case 7968:
-        ret = 7976;
-        break;
-      case 7969:
-        ret = 7977;
-        break;
-      case 7970:
-        ret = 7978;
-        break;
-      case 7971:
-        ret = 7979;
-        break;
-      case 7972:
-        ret = 7980;
-        break;
-      case 7973:
-        ret = 7981;
-        break;
-      case 7974:
-        ret = 7982;
-        break;
-      case 7975:
-        ret = 7983;
-        break;
-      case 7984:
-        ret = 7992;
-        break;
-      case 7985:
-        ret = 7993;
-        break;
-      case 7986:
-        ret = 7994;
-        break;
-      case 7987:
-        ret = 7995;
-        break;
-      case 7988:
-        ret = 7996;
-        break;
-      case 7989:
-        ret = 7997;
-        break;
-      case 7990:
-        ret = 7998;
-        break;
-      case 7991:
-        ret = 7999;
-        break;
-      case 8000:
-        ret = 8008;
-        break;
-      case 8001:
-        ret = 8009;
-        break;
-      case 8002:
-        ret = 8010;
-        break;
-      case 8003:
-        ret = 8011;
-        break;
-      case 8004:
-        ret = 8012;
-        break;
-      case 8005:
-        ret = 8013;
-        break;
-      case 8017:
-        ret = 8025;
-        break;
-      case 8019:
-        ret = 8027;
-        break;
-      case 8021:
-        ret = 8029;
-        break;
-      case 8023:
-        ret = 8031;
-        break;
-      case 8032:
-        ret = 8040;
-        break;
-      case 8033:
-        ret = 8041;
-        break;
-      case 8034:
-        ret = 8042;
-        break;
-      case 8035:
-        ret = 8043;
-        break;
-      case 8036:
-        ret = 8044;
-        break;
-      case 8037:
-        ret = 8045;
-        break;
-      case 8038:
-        ret = 8046;
-        break;
-      case 8039:
-        ret = 8047;
-        break;
-      case 8048:
-        ret = 8122;
-        break;
-      case 8049:
-        ret = 8123;
-        break;
-      case 8050:
-        ret = 8136;
-        break;
-      case 8051:
-        ret = 8137;
-        break;
-      case 8052:
-        ret = 8138;
-        break;
-      case 8053:
-        ret = 8139;
-        break;
-      case 8054:
-        ret = 8154;
-        break;
-      case 8055:
-        ret = 8155;
-        break;
-      case 8056:
-        ret = 8184;
-        break;
-      case 8057:
-        ret = 8185;
-        break;
-      case 8058:
-        ret = 8170;
-        break;
-      case 8059:
-        ret = 8171;
-        break;
-      case 8060:
-        ret = 8186;
-        break;
-      case 8061:
-        ret = 8187;
-        break;
-      case 8064:
-        ret = 8072;
-        break;
-      case 8065:
-        ret = 8073;
-        break;
-      case 8066:
-        ret = 8074;
-        break;
-      case 8067:
-        ret = 8075;
-        break;
-      case 8068:
-        ret = 8076;
-        break;
-      case 8069:
-        ret = 8077;
-        break;
-      case 8070:
-        ret = 8078;
-        break;
-      case 8071:
-        ret = 8079;
-        break;
-      case 8080:
-        ret = 8088;
-        break;
-      case 8081:
-        ret = 8089;
-        break;
-      case 8082:
-        ret = 8090;
-        break;
-      case 8083:
-        ret = 8091;
-        break;
-      case 8084:
-        ret = 8092;
-        break;
-      case 8085:
-        ret = 8093;
-        break;
-      case 8086:
-        ret = 8094;
-        break;
-      case 8087:
-        ret = 8095;
-        break;
-      case 8096:
-        ret = 8104;
-        break;
-      case 8097:
-        ret = 8105;
-        break;
-      case 8098:
-        ret = 8106;
-        break;
-      case 8099:
-        ret = 8107;
-        break;
-      case 8100:
-        ret = 8108;
-        break;
-      case 8101:
-        ret = 8109;
-        break;
-      case 8102:
-        ret = 8110;
-        break;
-      case 8103:
-        ret = 8111;
-        break;
-      case 8112:
-        ret = 8120;
-        break;
-      case 8113:
-        ret = 8121;
-        break;
-      case 8115:
-        ret = 8124;
-        break;
-      case 8131:
-        ret = 8140;
-        break;
-      case 8144:
-        ret = 8152;
-        break;
-      case 8145:
-        ret = 8153;
-        break;
-      case 8160:
-        ret = 8168;
-        break;
-      case 8161:
-        ret = 8169;
-        break;
-      case 8165:
-        ret = 8172;
-        break;
-      case 8179:
-        ret = 8188;
-        break;
-      case 8560:
-        ret = 8544;
-        break;
-      case 8561:
-        ret = 8545;
-        break;
-      case 8562:
-        ret = 8546;
-        break;
-      case 8563:
-        ret = 8547;
-        break;
-      case 8564:
-        ret = 8548;
-        break;
-      case 8565:
-        ret = 8549;
-        break;
-      case 8566:
-        ret = 8550;
-        break;
-      case 8567:
-        ret = 8551;
-        break;
-      case 8568:
-        ret = 8552;
-        break;
-      case 8569:
-        ret = 8553;
-        break;
-      case 8570:
-        ret = 8554;
-        break;
-      case 8571:
-        ret = 8555;
-        break;
-      case 8572:
-        ret = 8556;
-        break;
-      case 8573:
-        ret = 8557;
-        break;
-      case 8574:
-        ret = 8558;
-        break;
-      case 8575:
-        ret = 8559;
-        break;
-      case 9424:
-        ret = 9398;
-        break;
-      case 9425:
-        ret = 9399;
-        break;
-      case 9426:
-        ret = 9400;
-        break;
-      case 9427:
-        ret = 9401;
-        break;
-      case 9428:
-        ret = 9402;
-        break;
-      case 9429:
-        ret = 9403;
-        break;
-      case 9430:
-        ret = 9404;
-        break;
-      case 9431:
-        ret = 9405;
-        break;
-      case 9432:
-        ret = 9406;
-        break;
-      case 9433:
-        ret = 9407;
-        break;
-      case 9434:
-        ret = 9408;
-        break;
-      case 9435:
-        ret = 9409;
-        break;
-      case 9436:
-        ret = 9410;
-        break;
-      case 9437:
-        ret = 9411;
-        break;
-      case 9438:
-        ret = 9412;
-        break;
-      case 9439:
-        ret = 9413;
-        break;
-      case 9440:
-        ret = 9414;
-        break;
-      case 9441:
-        ret = 9415;
-        break;
-      case 9442:
-        ret = 9416;
-        break;
-      case 9443:
-        ret = 9417;
-        break;
-      case 9444:
-        ret = 9418;
-        break;
-      case 9445:
-        ret = 9419;
-        break;
-      case 9446:
-        ret = 9420;
-        break;
-      case 9447:
-        ret = 9421;
-        break;
-      case 9448:
-        ret = 9422;
-        break;
-      case 9449:
-        ret = 9423;
-        break;
-      case 65345:
-        ret = 65313;
-        break;
-      case 65346:
-        ret = 65314;
-        break;
-      case 65347:
-        ret = 65315;
-        break;
-      case 65348:
-        ret = 65316;
-        break;
-      case 65349:
-        ret = 65317;
-        break;
-      case 65350:
-        ret = 65318;
-        break;
-      case 65351:
-        ret = 65319;
-        break;
-      case 65352:
-        ret = 65320;
-        break;
-      case 65353:
-        ret = 65321;
-        break;
-      case 65354:
-        ret = 65322;
-        break;
-      case 65355:
-        ret = 65323;
-        break;
-      case 65356:
-        ret = 65324;
-        break;
-      case 65357:
-        ret = 65325;
-        break;
-      case 65358:
-        ret = 65326;
-        break;
-      case 65359:
-        ret = 65327;
-        break;
-      case 65360:
-        ret = 65328;
-        break;
-      case 65361:
-        ret = 65329;
-        break;
-      case 65362:
-        ret = 65330;
-        break;
-      case 65363:
-        ret = 65331;
-        break;
-      case 65364:
-        ret = 65332;
-        break;
-      case 65365:
-        ret = 65333;
-        break;
-      case 65366:
-        ret = 65334;
-        break;
-      case 65367:
-        ret = 65335;
-        break;
-      case 65368:
-        ret = 65336;
-        break;
-      case 65369:
-        ret = 65337;
-        break;
-      case 65370:
-        ret = 65338;
-        break;
-      }
-      return (char) ret;
-    }
-    return Character.toUpperCase(c);
-  }
-
-  /** Convert a character to lower case. */
-  public static char toLowerCase(char c)
-  {
-    if (java_1_0)
-    {
-      int ret = (int) c;
-      switch (c)
-      {
-      case 65:
-        ret = 97;
-        break;
-      case 66:
-        ret = 98;
-        break;
-      case 67:
-        ret = 99;
-        break;
-      case 68:
-        ret = 100;
-        break;
-      case 69:
-        ret = 101;
-        break;
-      case 70:
-        ret = 102;
-        break;
-      case 71:
-        ret = 103;
-        break;
-      case 72:
-        ret = 104;
-        break;
-      case 73:
-        ret = 105;
-        break;
-      case 74:
-        ret = 106;
-        break;
-      case 75:
-        ret = 107;
-        break;
-      case 76:
-        ret = 108;
-        break;
-      case 77:
-        ret = 109;
-        break;
-      case 78:
-        ret = 110;
-        break;
-      case 79:
-        ret = 111;
-        break;
-      case 80:
-        ret = 112;
-        break;
-      case 81:
-        ret = 113;
-        break;
-      case 82:
-        ret = 114;
-        break;
-      case 83:
-        ret = 115;
-        break;
-      case 84:
-        ret = 116;
-        break;
-      case 85:
-        ret = 117;
-        break;
-      case 86:
-        ret = 118;
-        break;
-      case 87:
-        ret = 119;
-        break;
-      case 88:
-        ret = 120;
-        break;
-      case 89:
-        ret = 121;
-        break;
-      case 90:
-        ret = 122;
-        break;
-      case 192:
-        ret = 224;
-        break;
-      case 193:
-        ret = 225;
-        break;
-      case 194:
-        ret = 226;
-        break;
-      case 195:
-        ret = 227;
-        break;
-      case 196:
-        ret = 228;
-        break;
-      case 197:
-        ret = 229;
-        break;
-      case 198:
-        ret = 230;
-        break;
-      case 199:
-        ret = 231;
-        break;
-      case 200:
-        ret = 232;
-        break;
-      case 201:
-        ret = 233;
-        break;
-      case 202:
-        ret = 234;
-        break;
-      case 203:
-        ret = 235;
-        break;
-      case 204:
-        ret = 236;
-        break;
-      case 205:
-        ret = 237;
-        break;
-      case 206:
-        ret = 238;
-        break;
-      case 207:
-        ret = 239;
-        break;
-      case 208:
-        ret = 240;
-        break;
-      case 209:
-        ret = 241;
-        break;
-      case 210:
-        ret = 242;
-        break;
-      case 211:
-        ret = 243;
-        break;
-      case 212:
-        ret = 244;
-        break;
-      case 213:
-        ret = 245;
-        break;
-      case 214:
-        ret = 246;
-        break;
-      case 216:
-        ret = 248;
-        break;
-      case 217:
-        ret = 249;
-        break;
-      case 218:
-        ret = 250;
-        break;
-      case 219:
-        ret = 251;
-        break;
-      case 220:
-        ret = 252;
-        break;
-      case 221:
-        ret = 253;
-        break;
-      case 222:
-        ret = 254;
-        break;
-      case 256:
-        ret = 257;
-        break;
-      case 258:
-        ret = 259;
-        break;
-      case 260:
-        ret = 261;
-        break;
-      case 262:
-        ret = 263;
-        break;
-      case 264:
-        ret = 265;
-        break;
-      case 266:
-        ret = 267;
-        break;
-      case 268:
-        ret = 269;
-        break;
-      case 270:
-        ret = 271;
-        break;
-      case 272:
-        ret = 273;
-        break;
-      case 274:
-        ret = 275;
-        break;
-      case 276:
-        ret = 277;
-        break;
-      case 278:
-        ret = 279;
-        break;
-      case 280:
-        ret = 281;
-        break;
-      case 282:
-        ret = 283;
-        break;
-      case 284:
-        ret = 285;
-        break;
-      case 286:
-        ret = 287;
-        break;
-      case 288:
-        ret = 289;
-        break;
-      case 290:
-        ret = 291;
-        break;
-      case 292:
-        ret = 293;
-        break;
-      case 294:
-        ret = 295;
-        break;
-      case 296:
-        ret = 297;
-        break;
-      case 298:
-        ret = 299;
-        break;
-      case 300:
-        ret = 301;
-        break;
-      case 302:
-        ret = 303;
-        break;
-      case 304:
-        ret = 105;
-        break;
-      case 306:
-        ret = 307;
-        break;
-      case 308:
-        ret = 309;
-        break;
-      case 310:
-        ret = 311;
-        break;
-      case 313:
-        ret = 314;
-        break;
-      case 315:
-        ret = 316;
-        break;
-      case 317:
-        ret = 318;
-        break;
-      case 319:
-        ret = 320;
-        break;
-      case 321:
-        ret = 322;
-        break;
-      case 323:
-        ret = 324;
-        break;
-      case 325:
-        ret = 326;
-        break;
-      case 327:
-        ret = 328;
-        break;
-      case 330:
-        ret = 331;
-        break;
-      case 332:
-        ret = 333;
-        break;
-      case 334:
-        ret = 335;
-        break;
-      case 336:
-        ret = 337;
-        break;
-      case 338:
-        ret = 339;
-        break;
-      case 340:
-        ret = 341;
-        break;
-      case 342:
-        ret = 343;
-        break;
-      case 344:
-        ret = 345;
-        break;
-      case 346:
-        ret = 347;
-        break;
-      case 348:
-        ret = 349;
-        break;
-      case 350:
-        ret = 351;
-        break;
-      case 352:
-        ret = 353;
-        break;
-      case 354:
-        ret = 355;
-        break;
-      case 356:
-        ret = 357;
-        break;
-      case 358:
-        ret = 359;
-        break;
-      case 360:
-        ret = 361;
-        break;
-      case 362:
-        ret = 363;
-        break;
-      case 364:
-        ret = 365;
-        break;
-      case 366:
-        ret = 367;
-        break;
-      case 368:
-        ret = 369;
-        break;
-      case 370:
-        ret = 371;
-        break;
-      case 372:
-        ret = 373;
-        break;
-      case 374:
-        ret = 375;
-        break;
-      case 376:
-        ret = 255;
-        break;
-      case 377:
-        ret = 378;
-        break;
-      case 379:
-        ret = 380;
-        break;
-      case 381:
-        ret = 382;
-        break;
-      case 385:
-        ret = 595;
-        break;
-      case 386:
-        ret = 387;
-        break;
-      case 388:
-        ret = 389;
-        break;
-      case 390:
-        ret = 596;
-        break;
-      case 391:
-        ret = 392;
-        break;
-      case 393:
-        ret = 598;
-        break;
-      case 394:
-        ret = 599;
-        break;
-      case 395:
-        ret = 396;
-        break;
-      case 398:
-        ret = 600;
-        break;
-      case 399:
-        ret = 601;
-        break;
-      case 400:
-        ret = 603;
-        break;
-      case 401:
-        ret = 402;
-        break;
-      case 403:
-        ret = 608;
-        break;
-      case 404:
-        ret = 611;
-        break;
-      case 406:
-        ret = 617;
-        break;
-      case 407:
-        ret = 616;
-        break;
-      case 408:
-        ret = 409;
-        break;
-      case 412:
-        ret = 623;
-        break;
-      case 413:
-        ret = 626;
-        break;
-      case 416:
-        ret = 417;
-        break;
-      case 418:
-        ret = 419;
-        break;
-      case 420:
-        ret = 421;
-        break;
-      case 423:
-        ret = 424;
-        break;
-      case 425:
-        ret = 643;
-        break;
-      case 428:
-        ret = 429;
-        break;
-      case 430:
-        ret = 648;
-        break;
-      case 431:
-        ret = 432;
-        break;
-      case 433:
-        ret = 650;
-        break;
-      case 434:
-        ret = 651;
-        break;
-      case 435:
-        ret = 436;
-        break;
-      case 437:
-        ret = 438;
-        break;
-      case 439:
-        ret = 658;
-        break;
-      case 440:
-        ret = 441;
-        break;
-      case 444:
-        ret = 445;
-        break;
-      case 452:
-        ret = 454;
-        break;
-      case 453:
-        ret = 454;
-        break;
-      case 455:
-        ret = 457;
-        break;
-      case 456:
-        ret = 457;
-        break;
-      case 458:
-        ret = 460;
-        break;
-      case 459:
-        ret = 460;
-        break;
-      case 461:
-        ret = 462;
-        break;
-      case 463:
-        ret = 464;
-        break;
-      case 465:
-        ret = 466;
-        break;
-      case 467:
-        ret = 468;
-        break;
-      case 469:
-        ret = 470;
-        break;
-      case 471:
-        ret = 472;
-        break;
-      case 473:
-        ret = 474;
-        break;
-      case 475:
-        ret = 476;
-        break;
-      case 478:
-        ret = 479;
-        break;
-      case 480:
-        ret = 481;
-        break;
-      case 482:
-        ret = 483;
-        break;
-      case 484:
-        ret = 485;
-        break;
-      case 486:
-        ret = 487;
-        break;
-      case 488:
-        ret = 489;
-        break;
-      case 490:
-        ret = 491;
-        break;
-      case 492:
-        ret = 493;
-        break;
-      case 494:
-        ret = 495;
-        break;
-      case 497:
-        ret = 499;
-        break;
-      case 498:
-        ret = 499;
-        break;
-      case 500:
-        ret = 501;
-        break;
-      case 506:
-        ret = 507;
-        break;
-      case 508:
-        ret = 509;
-        break;
-      case 510:
-        ret = 511;
-        break;
-      case 512:
-        ret = 513;
-        break;
-      case 514:
-        ret = 515;
-        break;
-      case 516:
-        ret = 517;
-        break;
-      case 518:
-        ret = 519;
-        break;
-      case 520:
-        ret = 521;
-        break;
-      case 522:
-        ret = 523;
-        break;
-      case 524:
-        ret = 525;
-        break;
-      case 526:
-        ret = 527;
-        break;
-      case 528:
-        ret = 529;
-        break;
-      case 530:
-        ret = 531;
-        break;
-      case 532:
-        ret = 533;
-        break;
-      case 534:
-        ret = 535;
-        break;
-      case 902:
-        ret = 940;
-        break;
-      case 904:
-        ret = 941;
-        break;
-      case 905:
-        ret = 942;
-        break;
-      case 906:
-        ret = 943;
-        break;
-      case 908:
-        ret = 972;
-        break;
-      case 910:
-        ret = 973;
-        break;
-      case 911:
-        ret = 974;
-        break;
-      case 913:
-        ret = 945;
-        break;
-      case 914:
-        ret = 946;
-        break;
-      case 915:
-        ret = 947;
-        break;
-      case 916:
-        ret = 948;
-        break;
-      case 917:
-        ret = 949;
-        break;
-      case 918:
-        ret = 950;
-        break;
-      case 919:
-        ret = 951;
-        break;
-      case 920:
-        ret = 952;
-        break;
-      case 921:
-        ret = 953;
-        break;
-      case 922:
-        ret = 954;
-        break;
-      case 923:
-        ret = 955;
-        break;
-      case 924:
-        ret = 956;
-        break;
-      case 925:
-        ret = 957;
-        break;
-      case 926:
-        ret = 958;
-        break;
-      case 927:
-        ret = 959;
-        break;
-      case 928:
-        ret = 960;
-        break;
-      case 929:
-        ret = 961;
-        break;
-      case 931:
-        ret = 963;
-        break;
-      case 932:
-        ret = 964;
-        break;
-      case 933:
-        ret = 965;
-        break;
-      case 934:
-        ret = 966;
-        break;
-      case 935:
-        ret = 967;
-        break;
-      case 936:
-        ret = 968;
-        break;
-      case 937:
-        ret = 969;
-        break;
-      case 938:
-        ret = 970;
-        break;
-      case 939:
-        ret = 971;
-        break;
-      case 994:
-        ret = 995;
-        break;
-      case 996:
-        ret = 997;
-        break;
-      case 998:
-        ret = 999;
-        break;
-      case 1000:
-        ret = 1001;
-        break;
-      case 1002:
-        ret = 1003;
-        break;
-      case 1004:
-        ret = 1005;
-        break;
-      case 1006:
-        ret = 1007;
-        break;
-      case 1025:
-        ret = 1105;
-        break;
-      case 1026:
-        ret = 1106;
-        break;
-      case 1027:
-        ret = 1107;
-        break;
-      case 1028:
-        ret = 1108;
-        break;
-      case 1029:
-        ret = 1109;
-        break;
-      case 1030:
-        ret = 1110;
-        break;
-      case 1031:
-        ret = 1111;
-        break;
-      case 1032:
-        ret = 1112;
-        break;
-      case 1033:
-        ret = 1113;
-        break;
-      case 1034:
-        ret = 1114;
-        break;
-      case 1035:
-        ret = 1115;
-        break;
-      case 1036:
-        ret = 1116;
-        break;
-      case 1038:
-        ret = 1118;
-        break;
-      case 1039:
-        ret = 1119;
-        break;
-      case 1040:
-        ret = 1072;
-        break;
-      case 1041:
-        ret = 1073;
-        break;
-      case 1042:
-        ret = 1074;
-        break;
-      case 1043:
-        ret = 1075;
-        break;
-      case 1044:
-        ret = 1076;
-        break;
-      case 1045:
-        ret = 1077;
-        break;
-      case 1046:
-        ret = 1078;
-        break;
-      case 1047:
-        ret = 1079;
-        break;
-      case 1048:
-        ret = 1080;
-        break;
-      case 1049:
-        ret = 1081;
-        break;
-      case 1050:
-        ret = 1082;
-        break;
-      case 1051:
-        ret = 1083;
-        break;
-      case 1052:
-        ret = 1084;
-        break;
-      case 1053:
-        ret = 1085;
-        break;
-      case 1054:
-        ret = 1086;
-        break;
-      case 1055:
-        ret = 1087;
-        break;
-      case 1056:
-        ret = 1088;
-        break;
-      case 1057:
-        ret = 1089;
-        break;
-      case 1058:
-        ret = 1090;
-        break;
-      case 1059:
-        ret = 1091;
-        break;
-      case 1060:
-        ret = 1092;
-        break;
-      case 1061:
-        ret = 1093;
-        break;
-      case 1062:
-        ret = 1094;
-        break;
-      case 1063:
-        ret = 1095;
-        break;
-      case 1064:
-        ret = 1096;
-        break;
-      case 1065:
-        ret = 1097;
-        break;
-      case 1066:
-        ret = 1098;
-        break;
-      case 1067:
-        ret = 1099;
-        break;
-      case 1068:
-        ret = 1100;
-        break;
-      case 1069:
-        ret = 1101;
-        break;
-      case 1070:
-        ret = 1102;
-        break;
-      case 1071:
-        ret = 1103;
-        break;
-      case 1120:
-        ret = 1121;
-        break;
-      case 1122:
-        ret = 1123;
-        break;
-      case 1124:
-        ret = 1125;
-        break;
-      case 1126:
-        ret = 1127;
-        break;
-      case 1128:
-        ret = 1129;
-        break;
-      case 1130:
-        ret = 1131;
-        break;
-      case 1132:
-        ret = 1133;
-        break;
-      case 1134:
-        ret = 1135;
-        break;
-      case 1136:
-        ret = 1137;
-        break;
-      case 1138:
-        ret = 1139;
-        break;
-      case 1140:
-        ret = 1141;
-        break;
-      case 1142:
-        ret = 1143;
-        break;
-      case 1144:
-        ret = 1145;
-        break;
-      case 1146:
-        ret = 1147;
-        break;
-      case 1148:
-        ret = 1149;
-        break;
-      case 1150:
-        ret = 1151;
-        break;
-      case 1152:
-        ret = 1153;
-        break;
-      case 1168:
-        ret = 1169;
-        break;
-      case 1170:
-        ret = 1171;
-        break;
-      case 1172:
-        ret = 1173;
-        break;
-      case 1174:
-        ret = 1175;
-        break;
-      case 1176:
-        ret = 1177;
-        break;
-      case 1178:
-        ret = 1179;
-        break;
-      case 1180:
-        ret = 1181;
-        break;
-      case 1182:
-        ret = 1183;
-        break;
-      case 1184:
-        ret = 1185;
-        break;
-      case 1186:
-        ret = 1187;
-        break;
-      case 1188:
-        ret = 1189;
-        break;
-      case 1190:
-        ret = 1191;
-        break;
-      case 1192:
-        ret = 1193;
-        break;
-      case 1194:
-        ret = 1195;
-        break;
-      case 1196:
-        ret = 1197;
-        break;
-      case 1198:
-        ret = 1199;
-        break;
-      case 1200:
-        ret = 1201;
-        break;
-      case 1202:
-        ret = 1203;
-        break;
-      case 1204:
-        ret = 1205;
-        break;
-      case 1206:
-        ret = 1207;
-        break;
-      case 1208:
-        ret = 1209;
-        break;
-      case 1210:
-        ret = 1211;
-        break;
-      case 1212:
-        ret = 1213;
-        break;
-      case 1214:
-        ret = 1215;
-        break;
-      case 1217:
-        ret = 1218;
-        break;
-      case 1219:
-        ret = 1220;
-        break;
-      case 1223:
-        ret = 1224;
-        break;
-      case 1227:
-        ret = 1228;
-        break;
-      case 1232:
-        ret = 1233;
-        break;
-      case 1234:
-        ret = 1235;
-        break;
-      case 1236:
-        ret = 1237;
-        break;
-      case 1238:
-        ret = 1239;
-        break;
-      case 1240:
-        ret = 1241;
-        break;
-      case 1242:
-        ret = 1243;
-        break;
-      case 1244:
-        ret = 1245;
-        break;
-      case 1246:
-        ret = 1247;
-        break;
-      case 1248:
-        ret = 1249;
-        break;
-      case 1250:
-        ret = 1251;
-        break;
-      case 1252:
-        ret = 1253;
-        break;
-      case 1254:
-        ret = 1255;
-        break;
-      case 1256:
-        ret = 1257;
-        break;
-      case 1258:
-        ret = 1259;
-        break;
-      case 1262:
-        ret = 1263;
-        break;
-      case 1264:
-        ret = 1265;
-        break;
-      case 1266:
-        ret = 1267;
-        break;
-      case 1268:
-        ret = 1269;
-        break;
-      case 1272:
-        ret = 1273;
-        break;
-      case 1329:
-        ret = 1377;
-        break;
-      case 1330:
-        ret = 1378;
-        break;
-      case 1331:
-        ret = 1379;
-        break;
-      case 1332:
-        ret = 1380;
-        break;
-      case 1333:
-        ret = 1381;
-        break;
-      case 1334:
-        ret = 1382;
-        break;
-      case 1335:
-        ret = 1383;
-        break;
-      case 1336:
-        ret = 1384;
-        break;
-      case 1337:
-        ret = 1385;
-        break;
-      case 1338:
-        ret = 1386;
-        break;
-      case 1339:
-        ret = 1387;
-        break;
-      case 1340:
-        ret = 1388;
-        break;
-      case 1341:
-        ret = 1389;
-        break;
-      case 1342:
-        ret = 1390;
-        break;
-      case 1343:
-        ret = 1391;
-        break;
-      case 1344:
-        ret = 1392;
-        break;
-      case 1345:
-        ret = 1393;
-        break;
-      case 1346:
-        ret = 1394;
-        break;
-      case 1347:
-        ret = 1395;
-        break;
-      case 1348:
-        ret = 1396;
-        break;
-      case 1349:
-        ret = 1397;
-        break;
-      case 1350:
-        ret = 1398;
-        break;
-      case 1351:
-        ret = 1399;
-        break;
-      case 1352:
-        ret = 1400;
-        break;
-      case 1353:
-        ret = 1401;
-        break;
-      case 1354:
-        ret = 1402;
-        break;
-      case 1355:
-        ret = 1403;
-        break;
-      case 1356:
-        ret = 1404;
-        break;
-      case 1357:
-        ret = 1405;
-        break;
-      case 1358:
-        ret = 1406;
-        break;
-      case 1359:
-        ret = 1407;
-        break;
-      case 1360:
-        ret = 1408;
-        break;
-      case 1361:
-        ret = 1409;
-        break;
-      case 1362:
-        ret = 1410;
-        break;
-      case 1363:
-        ret = 1411;
-        break;
-      case 1364:
-        ret = 1412;
-        break;
-      case 1365:
-        ret = 1413;
-        break;
-      case 1366:
-        ret = 1414;
-        break;
-      case 4256:
-        ret = 4304;
-        break;
-      case 4257:
-        ret = 4305;
-        break;
-      case 4258:
-        ret = 4306;
-        break;
-      case 4259:
-        ret = 4307;
-        break;
-      case 4260:
-        ret = 4308;
-        break;
-      case 4261:
-        ret = 4309;
-        break;
-      case 4262:
-        ret = 4310;
-        break;
-      case 4263:
-        ret = 4311;
-        break;
-      case 4264:
-        ret = 4312;
-        break;
-      case 4265:
-        ret = 4313;
-        break;
-      case 4266:
-        ret = 4314;
-        break;
-      case 4267:
-        ret = 4315;
-        break;
-      case 4268:
-        ret = 4316;
-        break;
-      case 4269:
-        ret = 4317;
-        break;
-      case 4270:
-        ret = 4318;
-        break;
-      case 4271:
-        ret = 4319;
-        break;
-      case 4272:
-        ret = 4320;
-        break;
-      case 4273:
-        ret = 4321;
-        break;
-      case 4274:
-        ret = 4322;
-        break;
-      case 4275:
-        ret = 4323;
-        break;
-      case 4276:
-        ret = 4324;
-        break;
-      case 4277:
-        ret = 4325;
-        break;
-      case 4278:
-        ret = 4326;
-        break;
-      case 4279:
-        ret = 4327;
-        break;
-      case 4280:
-        ret = 4328;
-        break;
-      case 4281:
-        ret = 4329;
-        break;
-      case 4282:
-        ret = 4330;
-        break;
-      case 4283:
-        ret = 4331;
-        break;
-      case 4284:
-        ret = 4332;
-        break;
-      case 4285:
-        ret = 4333;
-        break;
-      case 4286:
-        ret = 4334;
-        break;
-      case 4287:
-        ret = 4335;
-        break;
-      case 4288:
-        ret = 4336;
-        break;
-      case 4289:
-        ret = 4337;
-        break;
-      case 4290:
-        ret = 4338;
-        break;
-      case 4291:
-        ret = 4339;
-        break;
-      case 4292:
-        ret = 4340;
-        break;
-      case 4293:
-        ret = 4341;
-        break;
-      case 7680:
-        ret = 7681;
-        break;
-      case 7682:
-        ret = 7683;
-        break;
-      case 7684:
-        ret = 7685;
-        break;
-      case 7686:
-        ret = 7687;
-        break;
-      case 7688:
-        ret = 7689;
-        break;
-      case 7690:
-        ret = 7691;
-        break;
-      case 7692:
-        ret = 7693;
-        break;
-      case 7694:
-        ret = 7695;
-        break;
-      case 7696:
-        ret = 7697;
-        break;
-      case 7698:
-        ret = 7699;
-        break;
-      case 7700:
-        ret = 7701;
-        break;
-      case 7702:
-        ret = 7703;
-        break;
-      case 7704:
-        ret = 7705;
-        break;
-      case 7706:
-        ret = 7707;
-        break;
-      case 7708:
-        ret = 7709;
-        break;
-      case 7710:
-        ret = 7711;
-        break;
-      case 7712:
-        ret = 7713;
-        break;
-      case 7714:
-        ret = 7715;
-        break;
-      case 7716:
-        ret = 7717;
-        break;
-      case 7718:
-        ret = 7719;
-        break;
-      case 7720:
-        ret = 7721;
-        break;
-      case 7722:
-        ret = 7723;
-        break;
-      case 7724:
-        ret = 7725;
-        break;
-      case 7726:
-        ret = 7727;
-        break;
-      case 7728:
-        ret = 7729;
-        break;
-      case 7730:
-        ret = 7731;
-        break;
-      case 7732:
-        ret = 7733;
-        break;
-      case 7734:
-        ret = 7735;
-        break;
-      case 7736:
-        ret = 7737;
-        break;
-      case 7738:
-        ret = 7739;
-        break;
-      case 7740:
-        ret = 7741;
-        break;
-      case 7742:
-        ret = 7743;
-        break;
-      case 7744:
-        ret = 7745;
-        break;
-      case 7746:
-        ret = 7747;
-        break;
-      case 7748:
-        ret = 7749;
-        break;
-      case 7750:
-        ret = 7751;
-        break;
-      case 7752:
-        ret = 7753;
-        break;
-      case 7754:
-        ret = 7755;
-        break;
-      case 7756:
-        ret = 7757;
-        break;
-      case 7758:
-        ret = 7759;
-        break;
-      case 7760:
-        ret = 7761;
-        break;
-      case 7762:
-        ret = 7763;
-        break;
-      case 7764:
-        ret = 7765;
-        break;
-      case 7766:
-        ret = 7767;
-        break;
-      case 7768:
-        ret = 7769;
-        break;
-      case 7770:
-        ret = 7771;
-        break;
-      case 7772:
-        ret = 7773;
-        break;
-      case 7774:
-        ret = 7775;
-        break;
-      case 7776:
-        ret = 7777;
-        break;
-      case 7778:
-        ret = 7779;
-        break;
-      case 7780:
-        ret = 7781;
-        break;
-      case 7782:
-        ret = 7783;
-        break;
-      case 7784:
-        ret = 7785;
-        break;
-      case 7786:
-        ret = 7787;
-        break;
-      case 7788:
-        ret = 7789;
-        break;
-      case 7790:
-        ret = 7791;
-        break;
-      case 7792:
-        ret = 7793;
-        break;
-      case 7794:
-        ret = 7795;
-        break;
-      case 7796:
-        ret = 7797;
-        break;
-      case 7798:
-        ret = 7799;
-        break;
-      case 7800:
-        ret = 7801;
-        break;
-      case 7802:
-        ret = 7803;
-        break;
-      case 7804:
-        ret = 7805;
-        break;
-      case 7806:
-        ret = 7807;
-        break;
-      case 7808:
-        ret = 7809;
-        break;
-      case 7810:
-        ret = 7811;
-        break;
-      case 7812:
-        ret = 7813;
-        break;
-      case 7814:
-        ret = 7815;
-        break;
-      case 7816:
-        ret = 7817;
-        break;
-      case 7818:
-        ret = 7819;
-        break;
-      case 7820:
-        ret = 7821;
-        break;
-      case 7822:
-        ret = 7823;
-        break;
-      case 7824:
-        ret = 7825;
-        break;
-      case 7826:
-        ret = 7827;
-        break;
-      case 7828:
-        ret = 7829;
-        break;
-      case 7840:
-        ret = 7841;
-        break;
-      case 7842:
-        ret = 7843;
-        break;
-      case 7844:
-        ret = 7845;
-        break;
-      case 7846:
-        ret = 7847;
-        break;
-      case 7848:
-        ret = 7849;
-        break;
-      case 7850:
-        ret = 7851;
-        break;
-      case 7852:
-        ret = 7853;
-        break;
-      case 7854:
-        ret = 7855;
-        break;
-      case 7856:
-        ret = 7857;
-        break;
-      case 7858:
-        ret = 7859;
-        break;
-      case 7860:
-        ret = 7861;
-        break;
-      case 7862:
-        ret = 7863;
-        break;
-      case 7864:
-        ret = 7865;
-        break;
-      case 7866:
-        ret = 7867;
-        break;
-      case 7868:
-        ret = 7869;
-        break;
-      case 7870:
-        ret = 7871;
-        break;
-      case 7872:
-        ret = 7873;
-        break;
-      case 7874:
-        ret = 7875;
-        break;
-      case 7876:
-        ret = 7877;
-        break;
-      case 7878:
-        ret = 7879;
-        break;
-      case 7880:
-        ret = 7881;
-        break;
-      case 7882:
-        ret = 7883;
-        break;
-      case 7884:
-        ret = 7885;
-        break;
-      case 7886:
-        ret = 7887;
-        break;
-      case 7888:
-        ret = 7889;
-        break;
-      case 7890:
-        ret = 7891;
-        break;
-      case 7892:
-        ret = 7893;
-        break;
-      case 7894:
-        ret = 7895;
-        break;
-      case 7896:
-        ret = 7897;
-        break;
-      case 7898:
-        ret = 7899;
-        break;
-      case 7900:
-        ret = 7901;
-        break;
-      case 7902:
-        ret = 7903;
-        break;
-      case 7904:
-        ret = 7905;
-        break;
-      case 7906:
-        ret = 7907;
-        break;
-      case 7908:
-        ret = 7909;
-        break;
-      case 7910:
-        ret = 7911;
-        break;
-      case 7912:
-        ret = 7913;
-        break;
-      case 7914:
-        ret = 7915;
-        break;
-      case 7916:
-        ret = 7917;
-        break;
-      case 7918:
-        ret = 7919;
-        break;
-      case 7920:
-        ret = 7921;
-        break;
-      case 7922:
-        ret = 7923;
-        break;
-      case 7924:
-        ret = 7925;
-        break;
-      case 7926:
-        ret = 7927;
-        break;
-      case 7928:
-        ret = 7929;
-        break;
-      case 7944:
-        ret = 7936;
-        break;
-      case 7945:
-        ret = 7937;
-        break;
-      case 7946:
-        ret = 7938;
-        break;
-      case 7947:
-        ret = 7939;
-        break;
-      case 7948:
-        ret = 7940;
-        break;
-      case 7949:
-        ret = 7941;
-        break;
-      case 7950:
-        ret = 7942;
-        break;
-      case 7951:
-        ret = 7943;
-        break;
-      case 7960:
-        ret = 7952;
-        break;
-      case 7961:
-        ret = 7953;
-        break;
-      case 7962:
-        ret = 7954;
-        break;
-      case 7963:
-        ret = 7955;
-        break;
-      case 7964:
-        ret = 7956;
-        break;
-      case 7965:
-        ret = 7957;
-        break;
-      case 7976:
-        ret = 7968;
-        break;
-      case 7977:
-        ret = 7969;
-        break;
-      case 7978:
-        ret = 7970;
-        break;
-      case 7979:
-        ret = 7971;
-        break;
-      case 7980:
-        ret = 7972;
-        break;
-      case 7981:
-        ret = 7973;
-        break;
-      case 7982:
-        ret = 7974;
-        break;
-      case 7983:
-        ret = 7975;
-        break;
-      case 7992:
-        ret = 7984;
-        break;
-      case 7993:
-        ret = 7985;
-        break;
-      case 7994:
-        ret = 7986;
-        break;
-      case 7995:
-        ret = 7987;
-        break;
-      case 7996:
-        ret = 7988;
-        break;
-      case 7997:
-        ret = 7989;
-        break;
-      case 7998:
-        ret = 7990;
-        break;
-      case 7999:
-        ret = 7991;
-        break;
-      case 8008:
-        ret = 8000;
-        break;
-      case 8009:
-        ret = 8001;
-        break;
-      case 8010:
-        ret = 8002;
-        break;
-      case 8011:
-        ret = 8003;
-        break;
-      case 8012:
-        ret = 8004;
-        break;
-      case 8013:
-        ret = 8005;
-        break;
-      case 8025:
-        ret = 8017;
-        break;
-      case 8027:
-        ret = 8019;
-        break;
-      case 8029:
-        ret = 8021;
-        break;
-      case 8031:
-        ret = 8023;
-        break;
-      case 8040:
-        ret = 8032;
-        break;
-      case 8041:
-        ret = 8033;
-        break;
-      case 8042:
-        ret = 8034;
-        break;
-      case 8043:
-        ret = 8035;
-        break;
-      case 8044:
-        ret = 8036;
-        break;
-      case 8045:
-        ret = 8037;
-        break;
-      case 8046:
-        ret = 8038;
-        break;
-      case 8047:
-        ret = 8039;
-        break;
-      case 8072:
-        ret = 8064;
-        break;
-      case 8073:
-        ret = 8065;
-        break;
-      case 8074:
-        ret = 8066;
-        break;
-      case 8075:
-        ret = 8067;
-        break;
-      case 8076:
-        ret = 8068;
-        break;
-      case 8077:
-        ret = 8069;
-        break;
-      case 8078:
-        ret = 8070;
-        break;
-      case 8079:
-        ret = 8071;
-        break;
-      case 8088:
-        ret = 8080;
-        break;
-      case 8089:
-        ret = 8081;
-        break;
-      case 8090:
-        ret = 8082;
-        break;
-      case 8091:
-        ret = 8083;
-        break;
-      case 8092:
-        ret = 8084;
-        break;
-      case 8093:
-        ret = 8085;
-        break;
-      case 8094:
-        ret = 8086;
-        break;
-      case 8095:
-        ret = 8087;
-        break;
-      case 8104:
-        ret = 8096;
-        break;
-      case 8105:
-        ret = 8097;
-        break;
-      case 8106:
-        ret = 8098;
-        break;
-      case 8107:
-        ret = 8099;
-        break;
-      case 8108:
-        ret = 8100;
-        break;
-      case 8109:
-        ret = 8101;
-        break;
-      case 8110:
-        ret = 8102;
-        break;
-      case 8111:
-        ret = 8103;
-        break;
-      case 8120:
-        ret = 8112;
-        break;
-      case 8121:
-        ret = 8113;
-        break;
-      case 8122:
-        ret = 8048;
-        break;
-      case 8123:
-        ret = 8049;
-        break;
-      case 8124:
-        ret = 8115;
-        break;
-      case 8136:
-        ret = 8050;
-        break;
-      case 8137:
-        ret = 8051;
-        break;
-      case 8138:
-        ret = 8052;
-        break;
-      case 8139:
-        ret = 8053;
-        break;
-      case 8140:
-        ret = 8131;
-        break;
-      case 8152:
-        ret = 8144;
-        break;
-      case 8153:
-        ret = 8145;
-        break;
-      case 8154:
-        ret = 8054;
-        break;
-      case 8155:
-        ret = 8055;
-        break;
-      case 8168:
-        ret = 8160;
-        break;
-      case 8169:
-        ret = 8161;
-        break;
-      case 8170:
-        ret = 8058;
-        break;
-      case 8171:
-        ret = 8059;
-        break;
-      case 8172:
-        ret = 8165;
-        break;
-      case 8184:
-        ret = 8056;
-        break;
-      case 8185:
-        ret = 8057;
-        break;
-      case 8186:
-        ret = 8060;
-        break;
-      case 8187:
-        ret = 8061;
-        break;
-      case 8188:
-        ret = 8179;
-        break;
-      case 8544:
-        ret = 8560;
-        break;
-      case 8545:
-        ret = 8561;
-        break;
-      case 8546:
-        ret = 8562;
-        break;
-      case 8547:
-        ret = 8563;
-        break;
-      case 8548:
-        ret = 8564;
-        break;
-      case 8549:
-        ret = 8565;
-        break;
-      case 8550:
-        ret = 8566;
-        break;
-      case 8551:
-        ret = 8567;
-        break;
-      case 8552:
-        ret = 8568;
-        break;
-      case 8553:
-        ret = 8569;
-        break;
-      case 8554:
-        ret = 8570;
-        break;
-      case 8555:
-        ret = 8571;
-        break;
-      case 8556:
-        ret = 8572;
-        break;
-      case 8557:
-        ret = 8573;
-        break;
-      case 8558:
-        ret = 8574;
-        break;
-      case 8559:
-        ret = 8575;
-        break;
-      case 9398:
-        ret = 9424;
-        break;
-      case 9399:
-        ret = 9425;
-        break;
-      case 9400:
-        ret = 9426;
-        break;
-      case 9401:
-        ret = 9427;
-        break;
-      case 9402:
-        ret = 9428;
-        break;
-      case 9403:
-        ret = 9429;
-        break;
-      case 9404:
-        ret = 9430;
-        break;
-      case 9405:
-        ret = 9431;
-        break;
-      case 9406:
-        ret = 9432;
-        break;
-      case 9407:
-        ret = 9433;
-        break;
-      case 9408:
-        ret = 9434;
-        break;
-      case 9409:
-        ret = 9435;
-        break;
-      case 9410:
-        ret = 9436;
-        break;
-      case 9411:
-        ret = 9437;
-        break;
-      case 9412:
-        ret = 9438;
-        break;
-      case 9413:
-        ret = 9439;
-        break;
-      case 9414:
-        ret = 9440;
-        break;
-      case 9415:
-        ret = 9441;
-        break;
-      case 9416:
-        ret = 9442;
-        break;
-      case 9417:
-        ret = 9443;
-        break;
-      case 9418:
-        ret = 9444;
-        break;
-      case 9419:
-        ret = 9445;
-        break;
-      case 9420:
-        ret = 9446;
-        break;
-      case 9421:
-        ret = 9447;
-        break;
-      case 9422:
-        ret = 9448;
-        break;
-      case 9423:
-        ret = 9449;
-        break;
-      case 65313:
-        ret = 65345;
-        break;
-      case 65314:
-        ret = 65346;
-        break;
-      case 65315:
-        ret = 65347;
-        break;
-      case 65316:
-        ret = 65348;
-        break;
-      case 65317:
-        ret = 65349;
-        break;
-      case 65318:
-        ret = 65350;
-        break;
-      case 65319:
-        ret = 65351;
-        break;
-      case 65320:
-        ret = 65352;
-        break;
-      case 65321:
-        ret = 65353;
-        break;
-      case 65322:
-        ret = 65354;
-        break;
-      case 65323:
-        ret = 65355;
-        break;
-      case 65324:
-        ret = 65356;
-        break;
-      case 65325:
-        ret = 65357;
-        break;
-      case 65326:
-        ret = 65358;
-        break;
-      case 65327:
-        ret = 65359;
-        break;
-      case 65328:
-        ret = 65360;
-        break;
-      case 65329:
-        ret = 65361;
-        break;
-      case 65330:
-        ret = 65362;
-        break;
-      case 65331:
-        ret = 65363;
-        break;
-      case 65332:
-        ret = 65364;
-        break;
-      case 65333:
-        ret = 65365;
-        break;
-      case 65334:
-        ret = 65366;
-        break;
-      case 65335:
-        ret = 65367;
-        break;
-      case 65336:
-        ret = 65368;
-        break;
-      case 65337:
-        ret = 65369;
-        break;
-      case 65338:
-        ret = 65370;
-        break;
-      }
-      return (char) ret;
-    }
-    return Character.toLowerCase(c);
-  }
-
-  /** Convert a String to title case. */
-  public static String toTitleCase(String s)
-  {
-    javajs.util.SB sb = new javajs.util.SB();
-    for (int i = 0; i < s.length(); i++)
-    {
-      sb.appendC(CaseMgr.toTitleCase(s.charAt(i)));
-    }
-    return sb.toString();
-  }
-
-  /** Convert a String to upper case. */
-  public static String toUpperCase(String s)
-  {
-    javajs.util.SB sb = new javajs.util.SB();
-    for (int i = 0; i < s.length(); i++)
-    {
-      sb.appendC(CaseMgr.toUpperCase(s.charAt(i)));
-    }
-    return sb.toString();
-  }
-
-  /** Convert a String to lower case. */
-  public static String toLowerCase(String s)
-  {
-    javajs.util.SB sb = new javajs.util.SB();
-    for (int i = 0; i < s.length(); i++)
-    {
-      sb.appendC(CaseMgr.toLowerCase(s.charAt(i)));
-    }
-    return sb.toString();
-  }
-
-  /** Convert a character to title case. */
-  public static char toTitleCase(char c)
-  {
-    if (java_1_0)
-    {
-      int ret = (int) toUpperCase(c);
-      switch (c)
-      {
-      case 452:
-        ret = 453;
-        break;
-      case 453:
-        ret = 453;
-        break;
-      case 454:
-        ret = 453;
-        break;
-      case 455:
-        ret = 456;
-        break;
-      case 456:
-        ret = 456;
-        break;
-      case 457:
-        ret = 456;
-        break;
-      case 458:
-        ret = 459;
-        break;
-      case 459:
-        ret = 459;
-        break;
-      case 460:
-        ret = 459;
-        break;
-      case 497:
-        ret = 498;
-        break;
-      case 498:
-        ret = 498;
-        break;
-      case 499:
-        ret = 498;
-        break;
-      }
-      return (char) ret;
-    }
-    return Character.toTitleCase(c);
-  }
-
-  /**
-   * Duplicates the regionMatches routine of String -- but makes use of the
-   * definitions of upper, lower, and title case in this class when ignoreCase
-   * is set.
-   */
-  public static boolean regionMatches(StringLike s1, boolean ign, int i1,
-          StringLike s2, int i2, int i3)
-  {
-    int itot = i2 + i3;
-    if (itot > s2.length() || i1 + i3 > s1.length())
-    {
-      return false;
-    }
-    if (!ign)
-    {
-      for (int i = i2; i < itot; i++)
-      {
-        if (s2.charAt(i) != s1.charAt(i1++))
-        {
-          return false;
-        }
-      }
-    }
-    else
-    {
-      for (int i = i2; i < itot; i++)
-      {
-        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
-        {
-          return false;
-        }
-      }
-    }
-    return true;
-  }
-
-  /**
-   * Duplicates the regionMatches routine of String -- but makes use of the
-   * definitions of upper, lower, and title case in this class when ignoreCase
-   * is set.
-   */
-  public static boolean regionMatches(String s1, boolean ign, int i1,
-          StringLike s2, int i2, int i3)
-  {
-    int itot = i2 + i3;
-    if (itot > s2.length() || i1 + i3 > s1.length())
-    {
-      return false;
-    }
-    if (!ign)
-    {
-      for (int i = i2; i < itot; i++)
-      {
-        if (s2.charAt(i) != s1.charAt(i1++))
-        {
-          return false;
-        }
-      }
-    }
-    else
-    {
-      for (int i = i2; i < itot; i++)
-      {
-        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
-        {
-          return false;
-        }
-      }
-    }
-    return true;
-  }
-
-  /**
-   * Duplicates the regionMatches routine of String -- but makes use of the
-   * definitions of upper, lower, and title case in this class when ignoreCase
-   * is set.
-   */
-  public static boolean regionMatches(StringLike s1, boolean ign, int i1,
-          String s2, int i2, int i3)
-  {
-    int itot = i2 + i3;
-    if (itot > s2.length() || i1 + i3 > s1.length())
-    {
-      return false;
-    }
-    if (!ign)
-    {
-      for (int i = i2; i < itot; i++)
-      {
-        if (s2.charAt(i) != s1.charAt(i1++))
-        {
-          return false;
-        }
-      }
-    }
-    else
-    {
-      for (int i = i2; i < itot; i++)
-      {
-        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
-        {
-          return false;
-        }
-      }
-    }
-    return true;
-  }
-
-  /**
-   * Duplicates the regionMatches routine of String -- but makes use of the
-   * definitions of upper, lower, and title case in this class when ignoreCase
-   * is set.
-   */
-  public static boolean regionMatches(String s1, boolean ign, int i1,
-          String s2, int i2, int i3)
-  {
-    int itot = i2 + i3;
-    if (itot > s2.length() || i1 + i3 > s1.length())
-    {
-      return false;
-    }
-    if (!ign)
-    {
-      for (int i = i2; i < itot; i++)
-      {
-        if (s2.charAt(i) != s1.charAt(i1++))
-        {
-          return false;
-        }
-      }
-    }
-    else
-    {
-      for (int i = i2; i < itot; i++)
-      {
-        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
-        {
-          return false;
-        }
-      }
-    }
-    return true;
-  }
-}
+//\r
+// This software is now distributed according to\r
+// the Lesser Gnu Public License.  Please see\r
+// http://www.gnu.org/copyleft/lesser.txt for\r
+// the details.\r
+//    -- Happy Computing!\r
+//\r
+package com.stevesoft.pat;\r
+\r
+/**\r
+ * Encapsulates the Unicode definitions of Upper, Lower, and Title case as\r
+ * defined by <a href="http://www.unicode.org"> unicode.org</a>.\r
+ * <p>\r
+ * The performance of the methods found in String and Character is better, but\r
+ * these methods work both in java 1.0 and 1.1. If it is desirable, either to\r
+ * gain a slight performance increase or to accomodate application specific\r
+ * modifications to the definitions of upper, lower, and title case then it\r
+ * should be a straightforward task to substitute your own methods for these.\r
+ */\r
+final public class CaseMgr\r
+{\r
+  final static boolean java_1_0 = false;\r
+\r
+  /** Convert a character to upper case . */\r
+  public static char toUpperCase(char c)\r
+  {\r
+    if (java_1_0)\r
+    {\r
+      int ret = (int) c;\r
+      switch (c)\r
+      {\r
+      case 97:\r
+        ret = 65;\r
+        break;\r
+      case 98:\r
+        ret = 66;\r
+        break;\r
+      case 99:\r
+        ret = 67;\r
+        break;\r
+      case 100:\r
+        ret = 68;\r
+        break;\r
+      case 101:\r
+        ret = 69;\r
+        break;\r
+      case 102:\r
+        ret = 70;\r
+        break;\r
+      case 103:\r
+        ret = 71;\r
+        break;\r
+      case 104:\r
+        ret = 72;\r
+        break;\r
+      case 105:\r
+        ret = 73;\r
+        break;\r
+      case 106:\r
+        ret = 74;\r
+        break;\r
+      case 107:\r
+        ret = 75;\r
+        break;\r
+      case 108:\r
+        ret = 76;\r
+        break;\r
+      case 109:\r
+        ret = 77;\r
+        break;\r
+      case 110:\r
+        ret = 78;\r
+        break;\r
+      case 111:\r
+        ret = 79;\r
+        break;\r
+      case 112:\r
+        ret = 80;\r
+        break;\r
+      case 113:\r
+        ret = 81;\r
+        break;\r
+      case 114:\r
+        ret = 82;\r
+        break;\r
+      case 115:\r
+        ret = 83;\r
+        break;\r
+      case 116:\r
+        ret = 84;\r
+        break;\r
+      case 117:\r
+        ret = 85;\r
+        break;\r
+      case 118:\r
+        ret = 86;\r
+        break;\r
+      case 119:\r
+        ret = 87;\r
+        break;\r
+      case 120:\r
+        ret = 88;\r
+        break;\r
+      case 121:\r
+        ret = 89;\r
+        break;\r
+      case 122:\r
+        ret = 90;\r
+        break;\r
+      case 224:\r
+        ret = 192;\r
+        break;\r
+      case 225:\r
+        ret = 193;\r
+        break;\r
+      case 226:\r
+        ret = 194;\r
+        break;\r
+      case 227:\r
+        ret = 195;\r
+        break;\r
+      case 228:\r
+        ret = 196;\r
+        break;\r
+      case 229:\r
+        ret = 197;\r
+        break;\r
+      case 230:\r
+        ret = 198;\r
+        break;\r
+      case 231:\r
+        ret = 199;\r
+        break;\r
+      case 232:\r
+        ret = 200;\r
+        break;\r
+      case 233:\r
+        ret = 201;\r
+        break;\r
+      case 234:\r
+        ret = 202;\r
+        break;\r
+      case 235:\r
+        ret = 203;\r
+        break;\r
+      case 236:\r
+        ret = 204;\r
+        break;\r
+      case 237:\r
+        ret = 205;\r
+        break;\r
+      case 238:\r
+        ret = 206;\r
+        break;\r
+      case 239:\r
+        ret = 207;\r
+        break;\r
+      case 240:\r
+        ret = 208;\r
+        break;\r
+      case 241:\r
+        ret = 209;\r
+        break;\r
+      case 242:\r
+        ret = 210;\r
+        break;\r
+      case 243:\r
+        ret = 211;\r
+        break;\r
+      case 244:\r
+        ret = 212;\r
+        break;\r
+      case 245:\r
+        ret = 213;\r
+        break;\r
+      case 246:\r
+        ret = 214;\r
+        break;\r
+      case 248:\r
+        ret = 216;\r
+        break;\r
+      case 249:\r
+        ret = 217;\r
+        break;\r
+      case 250:\r
+        ret = 218;\r
+        break;\r
+      case 251:\r
+        ret = 219;\r
+        break;\r
+      case 252:\r
+        ret = 220;\r
+        break;\r
+      case 253:\r
+        ret = 221;\r
+        break;\r
+      case 254:\r
+        ret = 222;\r
+        break;\r
+      case 255:\r
+        ret = 376;\r
+        break;\r
+      case 257:\r
+        ret = 256;\r
+        break;\r
+      case 259:\r
+        ret = 258;\r
+        break;\r
+      case 261:\r
+        ret = 260;\r
+        break;\r
+      case 263:\r
+        ret = 262;\r
+        break;\r
+      case 265:\r
+        ret = 264;\r
+        break;\r
+      case 267:\r
+        ret = 266;\r
+        break;\r
+      case 269:\r
+        ret = 268;\r
+        break;\r
+      case 271:\r
+        ret = 270;\r
+        break;\r
+      case 273:\r
+        ret = 272;\r
+        break;\r
+      case 275:\r
+        ret = 274;\r
+        break;\r
+      case 277:\r
+        ret = 276;\r
+        break;\r
+      case 279:\r
+        ret = 278;\r
+        break;\r
+      case 281:\r
+        ret = 280;\r
+        break;\r
+      case 283:\r
+        ret = 282;\r
+        break;\r
+      case 285:\r
+        ret = 284;\r
+        break;\r
+      case 287:\r
+        ret = 286;\r
+        break;\r
+      case 289:\r
+        ret = 288;\r
+        break;\r
+      case 291:\r
+        ret = 290;\r
+        break;\r
+      case 293:\r
+        ret = 292;\r
+        break;\r
+      case 295:\r
+        ret = 294;\r
+        break;\r
+      case 297:\r
+        ret = 296;\r
+        break;\r
+      case 299:\r
+        ret = 298;\r
+        break;\r
+      case 301:\r
+        ret = 300;\r
+        break;\r
+      case 303:\r
+        ret = 302;\r
+        break;\r
+      case 305:\r
+        ret = 73;\r
+        break;\r
+      case 307:\r
+        ret = 306;\r
+        break;\r
+      case 309:\r
+        ret = 308;\r
+        break;\r
+      case 311:\r
+        ret = 310;\r
+        break;\r
+      case 314:\r
+        ret = 313;\r
+        break;\r
+      case 316:\r
+        ret = 315;\r
+        break;\r
+      case 318:\r
+        ret = 317;\r
+        break;\r
+      case 320:\r
+        ret = 319;\r
+        break;\r
+      case 322:\r
+        ret = 321;\r
+        break;\r
+      case 324:\r
+        ret = 323;\r
+        break;\r
+      case 326:\r
+        ret = 325;\r
+        break;\r
+      case 328:\r
+        ret = 327;\r
+        break;\r
+      case 331:\r
+        ret = 330;\r
+        break;\r
+      case 333:\r
+        ret = 332;\r
+        break;\r
+      case 335:\r
+        ret = 334;\r
+        break;\r
+      case 337:\r
+        ret = 336;\r
+        break;\r
+      case 339:\r
+        ret = 338;\r
+        break;\r
+      case 341:\r
+        ret = 340;\r
+        break;\r
+      case 343:\r
+        ret = 342;\r
+        break;\r
+      case 345:\r
+        ret = 344;\r
+        break;\r
+      case 347:\r
+        ret = 346;\r
+        break;\r
+      case 349:\r
+        ret = 348;\r
+        break;\r
+      case 351:\r
+        ret = 350;\r
+        break;\r
+      case 353:\r
+        ret = 352;\r
+        break;\r
+      case 355:\r
+        ret = 354;\r
+        break;\r
+      case 357:\r
+        ret = 356;\r
+        break;\r
+      case 359:\r
+        ret = 358;\r
+        break;\r
+      case 361:\r
+        ret = 360;\r
+        break;\r
+      case 363:\r
+        ret = 362;\r
+        break;\r
+      case 365:\r
+        ret = 364;\r
+        break;\r
+      case 367:\r
+        ret = 366;\r
+        break;\r
+      case 369:\r
+        ret = 368;\r
+        break;\r
+      case 371:\r
+        ret = 370;\r
+        break;\r
+      case 373:\r
+        ret = 372;\r
+        break;\r
+      case 375:\r
+        ret = 374;\r
+        break;\r
+      case 378:\r
+        ret = 377;\r
+        break;\r
+      case 380:\r
+        ret = 379;\r
+        break;\r
+      case 382:\r
+        ret = 381;\r
+        break;\r
+      case 383:\r
+        ret = 83;\r
+        break;\r
+      case 387:\r
+        ret = 386;\r
+        break;\r
+      case 389:\r
+        ret = 388;\r
+        break;\r
+      case 392:\r
+        ret = 391;\r
+        break;\r
+      case 396:\r
+        ret = 395;\r
+        break;\r
+      case 402:\r
+        ret = 401;\r
+        break;\r
+      case 409:\r
+        ret = 408;\r
+        break;\r
+      case 417:\r
+        ret = 416;\r
+        break;\r
+      case 419:\r
+        ret = 418;\r
+        break;\r
+      case 421:\r
+        ret = 420;\r
+        break;\r
+      case 424:\r
+        ret = 423;\r
+        break;\r
+      case 429:\r
+        ret = 428;\r
+        break;\r
+      case 432:\r
+        ret = 431;\r
+        break;\r
+      case 436:\r
+        ret = 435;\r
+        break;\r
+      case 438:\r
+        ret = 437;\r
+        break;\r
+      case 441:\r
+        ret = 440;\r
+        break;\r
+      case 445:\r
+        ret = 444;\r
+        break;\r
+      case 453:\r
+        ret = 452;\r
+        break;\r
+      case 454:\r
+        ret = 452;\r
+        break;\r
+      case 456:\r
+        ret = 455;\r
+        break;\r
+      case 457:\r
+        ret = 455;\r
+        break;\r
+      case 459:\r
+        ret = 458;\r
+        break;\r
+      case 460:\r
+        ret = 458;\r
+        break;\r
+      case 462:\r
+        ret = 461;\r
+        break;\r
+      case 464:\r
+        ret = 463;\r
+        break;\r
+      case 466:\r
+        ret = 465;\r
+        break;\r
+      case 468:\r
+        ret = 467;\r
+        break;\r
+      case 470:\r
+        ret = 469;\r
+        break;\r
+      case 472:\r
+        ret = 471;\r
+        break;\r
+      case 474:\r
+        ret = 473;\r
+        break;\r
+      case 476:\r
+        ret = 475;\r
+        break;\r
+      case 479:\r
+        ret = 478;\r
+        break;\r
+      case 481:\r
+        ret = 480;\r
+        break;\r
+      case 483:\r
+        ret = 482;\r
+        break;\r
+      case 485:\r
+        ret = 484;\r
+        break;\r
+      case 487:\r
+        ret = 486;\r
+        break;\r
+      case 489:\r
+        ret = 488;\r
+        break;\r
+      case 491:\r
+        ret = 490;\r
+        break;\r
+      case 493:\r
+        ret = 492;\r
+        break;\r
+      case 495:\r
+        ret = 494;\r
+        break;\r
+      case 498:\r
+        ret = 497;\r
+        break;\r
+      case 499:\r
+        ret = 497;\r
+        break;\r
+      case 501:\r
+        ret = 500;\r
+        break;\r
+      case 507:\r
+        ret = 506;\r
+        break;\r
+      case 509:\r
+        ret = 508;\r
+        break;\r
+      case 511:\r
+        ret = 510;\r
+        break;\r
+      case 513:\r
+        ret = 512;\r
+        break;\r
+      case 515:\r
+        ret = 514;\r
+        break;\r
+      case 517:\r
+        ret = 516;\r
+        break;\r
+      case 519:\r
+        ret = 518;\r
+        break;\r
+      case 521:\r
+        ret = 520;\r
+        break;\r
+      case 523:\r
+        ret = 522;\r
+        break;\r
+      case 525:\r
+        ret = 524;\r
+        break;\r
+      case 527:\r
+        ret = 526;\r
+        break;\r
+      case 529:\r
+        ret = 528;\r
+        break;\r
+      case 531:\r
+        ret = 530;\r
+        break;\r
+      case 533:\r
+        ret = 532;\r
+        break;\r
+      case 535:\r
+        ret = 534;\r
+        break;\r
+      case 595:\r
+        ret = 385;\r
+        break;\r
+      case 596:\r
+        ret = 390;\r
+        break;\r
+      case 598:\r
+        ret = 393;\r
+        break;\r
+      case 599:\r
+        ret = 394;\r
+        break;\r
+      case 600:\r
+        ret = 398;\r
+        break;\r
+      case 601:\r
+        ret = 399;\r
+        break;\r
+      case 603:\r
+        ret = 400;\r
+        break;\r
+      case 608:\r
+        ret = 403;\r
+        break;\r
+      case 611:\r
+        ret = 404;\r
+        break;\r
+      case 616:\r
+        ret = 407;\r
+        break;\r
+      case 617:\r
+        ret = 406;\r
+        break;\r
+      case 623:\r
+        ret = 412;\r
+        break;\r
+      case 626:\r
+        ret = 413;\r
+        break;\r
+      case 643:\r
+        ret = 425;\r
+        break;\r
+      case 648:\r
+        ret = 430;\r
+        break;\r
+      case 650:\r
+        ret = 433;\r
+        break;\r
+      case 651:\r
+        ret = 434;\r
+        break;\r
+      case 658:\r
+        ret = 439;\r
+        break;\r
+      case 940:\r
+        ret = 902;\r
+        break;\r
+      case 941:\r
+        ret = 904;\r
+        break;\r
+      case 942:\r
+        ret = 905;\r
+        break;\r
+      case 943:\r
+        ret = 906;\r
+        break;\r
+      case 945:\r
+        ret = 913;\r
+        break;\r
+      case 946:\r
+        ret = 914;\r
+        break;\r
+      case 947:\r
+        ret = 915;\r
+        break;\r
+      case 948:\r
+        ret = 916;\r
+        break;\r
+      case 949:\r
+        ret = 917;\r
+        break;\r
+      case 950:\r
+        ret = 918;\r
+        break;\r
+      case 951:\r
+        ret = 919;\r
+        break;\r
+      case 952:\r
+        ret = 920;\r
+        break;\r
+      case 953:\r
+        ret = 921;\r
+        break;\r
+      case 954:\r
+        ret = 922;\r
+        break;\r
+      case 955:\r
+        ret = 923;\r
+        break;\r
+      case 956:\r
+        ret = 924;\r
+        break;\r
+      case 957:\r
+        ret = 925;\r
+        break;\r
+      case 958:\r
+        ret = 926;\r
+        break;\r
+      case 959:\r
+        ret = 927;\r
+        break;\r
+      case 960:\r
+        ret = 928;\r
+        break;\r
+      case 961:\r
+        ret = 929;\r
+        break;\r
+      case 963:\r
+        ret = 931;\r
+        break;\r
+      case 964:\r
+        ret = 932;\r
+        break;\r
+      case 965:\r
+        ret = 933;\r
+        break;\r
+      case 966:\r
+        ret = 934;\r
+        break;\r
+      case 967:\r
+        ret = 935;\r
+        break;\r
+      case 968:\r
+        ret = 936;\r
+        break;\r
+      case 969:\r
+        ret = 937;\r
+        break;\r
+      case 970:\r
+        ret = 938;\r
+        break;\r
+      case 971:\r
+        ret = 939;\r
+        break;\r
+      case 972:\r
+        ret = 908;\r
+        break;\r
+      case 973:\r
+        ret = 910;\r
+        break;\r
+      case 974:\r
+        ret = 911;\r
+        break;\r
+      case 976:\r
+        ret = 914;\r
+        break;\r
+      case 977:\r
+        ret = 920;\r
+        break;\r
+      case 981:\r
+        ret = 934;\r
+        break;\r
+      case 982:\r
+        ret = 928;\r
+        break;\r
+      case 995:\r
+        ret = 994;\r
+        break;\r
+      case 997:\r
+        ret = 996;\r
+        break;\r
+      case 999:\r
+        ret = 998;\r
+        break;\r
+      case 1001:\r
+        ret = 1000;\r
+        break;\r
+      case 1003:\r
+        ret = 1002;\r
+        break;\r
+      case 1005:\r
+        ret = 1004;\r
+        break;\r
+      case 1007:\r
+        ret = 1006;\r
+        break;\r
+      case 1008:\r
+        ret = 922;\r
+        break;\r
+      case 1009:\r
+        ret = 929;\r
+        break;\r
+      case 1072:\r
+        ret = 1040;\r
+        break;\r
+      case 1073:\r
+        ret = 1041;\r
+        break;\r
+      case 1074:\r
+        ret = 1042;\r
+        break;\r
+      case 1075:\r
+        ret = 1043;\r
+        break;\r
+      case 1076:\r
+        ret = 1044;\r
+        break;\r
+      case 1077:\r
+        ret = 1045;\r
+        break;\r
+      case 1078:\r
+        ret = 1046;\r
+        break;\r
+      case 1079:\r
+        ret = 1047;\r
+        break;\r
+      case 1080:\r
+        ret = 1048;\r
+        break;\r
+      case 1081:\r
+        ret = 1049;\r
+        break;\r
+      case 1082:\r
+        ret = 1050;\r
+        break;\r
+      case 1083:\r
+        ret = 1051;\r
+        break;\r
+      case 1084:\r
+        ret = 1052;\r
+        break;\r
+      case 1085:\r
+        ret = 1053;\r
+        break;\r
+      case 1086:\r
+        ret = 1054;\r
+        break;\r
+      case 1087:\r
+        ret = 1055;\r
+        break;\r
+      case 1088:\r
+        ret = 1056;\r
+        break;\r
+      case 1089:\r
+        ret = 1057;\r
+        break;\r
+      case 1090:\r
+        ret = 1058;\r
+        break;\r
+      case 1091:\r
+        ret = 1059;\r
+        break;\r
+      case 1092:\r
+        ret = 1060;\r
+        break;\r
+      case 1093:\r
+        ret = 1061;\r
+        break;\r
+      case 1094:\r
+        ret = 1062;\r
+        break;\r
+      case 1095:\r
+        ret = 1063;\r
+        break;\r
+      case 1096:\r
+        ret = 1064;\r
+        break;\r
+      case 1097:\r
+        ret = 1065;\r
+        break;\r
+      case 1098:\r
+        ret = 1066;\r
+        break;\r
+      case 1099:\r
+        ret = 1067;\r
+        break;\r
+      case 1100:\r
+        ret = 1068;\r
+        break;\r
+      case 1101:\r
+        ret = 1069;\r
+        break;\r
+      case 1102:\r
+        ret = 1070;\r
+        break;\r
+      case 1103:\r
+        ret = 1071;\r
+        break;\r
+      case 1105:\r
+        ret = 1025;\r
+        break;\r
+      case 1106:\r
+        ret = 1026;\r
+        break;\r
+      case 1107:\r
+        ret = 1027;\r
+        break;\r
+      case 1108:\r
+        ret = 1028;\r
+        break;\r
+      case 1109:\r
+        ret = 1029;\r
+        break;\r
+      case 1110:\r
+        ret = 1030;\r
+        break;\r
+      case 1111:\r
+        ret = 1031;\r
+        break;\r
+      case 1112:\r
+        ret = 1032;\r
+        break;\r
+      case 1113:\r
+        ret = 1033;\r
+        break;\r
+      case 1114:\r
+        ret = 1034;\r
+        break;\r
+      case 1115:\r
+        ret = 1035;\r
+        break;\r
+      case 1116:\r
+        ret = 1036;\r
+        break;\r
+      case 1118:\r
+        ret = 1038;\r
+        break;\r
+      case 1119:\r
+        ret = 1039;\r
+        break;\r
+      case 1121:\r
+        ret = 1120;\r
+        break;\r
+      case 1123:\r
+        ret = 1122;\r
+        break;\r
+      case 1125:\r
+        ret = 1124;\r
+        break;\r
+      case 1127:\r
+        ret = 1126;\r
+        break;\r
+      case 1129:\r
+        ret = 1128;\r
+        break;\r
+      case 1131:\r
+        ret = 1130;\r
+        break;\r
+      case 1133:\r
+        ret = 1132;\r
+        break;\r
+      case 1135:\r
+        ret = 1134;\r
+        break;\r
+      case 1137:\r
+        ret = 1136;\r
+        break;\r
+      case 1139:\r
+        ret = 1138;\r
+        break;\r
+      case 1141:\r
+        ret = 1140;\r
+        break;\r
+      case 1143:\r
+        ret = 1142;\r
+        break;\r
+      case 1145:\r
+        ret = 1144;\r
+        break;\r
+      case 1147:\r
+        ret = 1146;\r
+        break;\r
+      case 1149:\r
+        ret = 1148;\r
+        break;\r
+      case 1151:\r
+        ret = 1150;\r
+        break;\r
+      case 1153:\r
+        ret = 1152;\r
+        break;\r
+      case 1169:\r
+        ret = 1168;\r
+        break;\r
+      case 1171:\r
+        ret = 1170;\r
+        break;\r
+      case 1173:\r
+        ret = 1172;\r
+        break;\r
+      case 1175:\r
+        ret = 1174;\r
+        break;\r
+      case 1177:\r
+        ret = 1176;\r
+        break;\r
+      case 1179:\r
+        ret = 1178;\r
+        break;\r
+      case 1181:\r
+        ret = 1180;\r
+        break;\r
+      case 1183:\r
+        ret = 1182;\r
+        break;\r
+      case 1185:\r
+        ret = 1184;\r
+        break;\r
+      case 1187:\r
+        ret = 1186;\r
+        break;\r
+      case 1189:\r
+        ret = 1188;\r
+        break;\r
+      case 1191:\r
+        ret = 1190;\r
+        break;\r
+      case 1193:\r
+        ret = 1192;\r
+        break;\r
+      case 1195:\r
+        ret = 1194;\r
+        break;\r
+      case 1197:\r
+        ret = 1196;\r
+        break;\r
+      case 1199:\r
+        ret = 1198;\r
+        break;\r
+      case 1201:\r
+        ret = 1200;\r
+        break;\r
+      case 1203:\r
+        ret = 1202;\r
+        break;\r
+      case 1205:\r
+        ret = 1204;\r
+        break;\r
+      case 1207:\r
+        ret = 1206;\r
+        break;\r
+      case 1209:\r
+        ret = 1208;\r
+        break;\r
+      case 1211:\r
+        ret = 1210;\r
+        break;\r
+      case 1213:\r
+        ret = 1212;\r
+        break;\r
+      case 1215:\r
+        ret = 1214;\r
+        break;\r
+      case 1218:\r
+        ret = 1217;\r
+        break;\r
+      case 1220:\r
+        ret = 1219;\r
+        break;\r
+      case 1224:\r
+        ret = 1223;\r
+        break;\r
+      case 1228:\r
+        ret = 1227;\r
+        break;\r
+      case 1233:\r
+        ret = 1232;\r
+        break;\r
+      case 1235:\r
+        ret = 1234;\r
+        break;\r
+      case 1237:\r
+        ret = 1236;\r
+        break;\r
+      case 1239:\r
+        ret = 1238;\r
+        break;\r
+      case 1241:\r
+        ret = 1240;\r
+        break;\r
+      case 1243:\r
+        ret = 1242;\r
+        break;\r
+      case 1245:\r
+        ret = 1244;\r
+        break;\r
+      case 1247:\r
+        ret = 1246;\r
+        break;\r
+      case 1249:\r
+        ret = 1248;\r
+        break;\r
+      case 1251:\r
+        ret = 1250;\r
+        break;\r
+      case 1253:\r
+        ret = 1252;\r
+        break;\r
+      case 1255:\r
+        ret = 1254;\r
+        break;\r
+      case 1257:\r
+        ret = 1256;\r
+        break;\r
+      case 1259:\r
+        ret = 1258;\r
+        break;\r
+      case 1263:\r
+        ret = 1262;\r
+        break;\r
+      case 1265:\r
+        ret = 1264;\r
+        break;\r
+      case 1267:\r
+        ret = 1266;\r
+        break;\r
+      case 1269:\r
+        ret = 1268;\r
+        break;\r
+      case 1273:\r
+        ret = 1272;\r
+        break;\r
+      case 1377:\r
+        ret = 1329;\r
+        break;\r
+      case 1378:\r
+        ret = 1330;\r
+        break;\r
+      case 1379:\r
+        ret = 1331;\r
+        break;\r
+      case 1380:\r
+        ret = 1332;\r
+        break;\r
+      case 1381:\r
+        ret = 1333;\r
+        break;\r
+      case 1382:\r
+        ret = 1334;\r
+        break;\r
+      case 1383:\r
+        ret = 1335;\r
+        break;\r
+      case 1384:\r
+        ret = 1336;\r
+        break;\r
+      case 1385:\r
+        ret = 1337;\r
+        break;\r
+      case 1386:\r
+        ret = 1338;\r
+        break;\r
+      case 1387:\r
+        ret = 1339;\r
+        break;\r
+      case 1388:\r
+        ret = 1340;\r
+        break;\r
+      case 1389:\r
+        ret = 1341;\r
+        break;\r
+      case 1390:\r
+        ret = 1342;\r
+        break;\r
+      case 1391:\r
+        ret = 1343;\r
+        break;\r
+      case 1392:\r
+        ret = 1344;\r
+        break;\r
+      case 1393:\r
+        ret = 1345;\r
+        break;\r
+      case 1394:\r
+        ret = 1346;\r
+        break;\r
+      case 1395:\r
+        ret = 1347;\r
+        break;\r
+      case 1396:\r
+        ret = 1348;\r
+        break;\r
+      case 1397:\r
+        ret = 1349;\r
+        break;\r
+      case 1398:\r
+        ret = 1350;\r
+        break;\r
+      case 1399:\r
+        ret = 1351;\r
+        break;\r
+      case 1400:\r
+        ret = 1352;\r
+        break;\r
+      case 1401:\r
+        ret = 1353;\r
+        break;\r
+      case 1402:\r
+        ret = 1354;\r
+        break;\r
+      case 1403:\r
+        ret = 1355;\r
+        break;\r
+      case 1404:\r
+        ret = 1356;\r
+        break;\r
+      case 1405:\r
+        ret = 1357;\r
+        break;\r
+      case 1406:\r
+        ret = 1358;\r
+        break;\r
+      case 1407:\r
+        ret = 1359;\r
+        break;\r
+      case 1408:\r
+        ret = 1360;\r
+        break;\r
+      case 1409:\r
+        ret = 1361;\r
+        break;\r
+      case 1410:\r
+        ret = 1362;\r
+        break;\r
+      case 1411:\r
+        ret = 1363;\r
+        break;\r
+      case 1412:\r
+        ret = 1364;\r
+        break;\r
+      case 1413:\r
+        ret = 1365;\r
+        break;\r
+      case 1414:\r
+        ret = 1366;\r
+        break;\r
+      case 7681:\r
+        ret = 7680;\r
+        break;\r
+      case 7683:\r
+        ret = 7682;\r
+        break;\r
+      case 7685:\r
+        ret = 7684;\r
+        break;\r
+      case 7687:\r
+        ret = 7686;\r
+        break;\r
+      case 7689:\r
+        ret = 7688;\r
+        break;\r
+      case 7691:\r
+        ret = 7690;\r
+        break;\r
+      case 7693:\r
+        ret = 7692;\r
+        break;\r
+      case 7695:\r
+        ret = 7694;\r
+        break;\r
+      case 7697:\r
+        ret = 7696;\r
+        break;\r
+      case 7699:\r
+        ret = 7698;\r
+        break;\r
+      case 7701:\r
+        ret = 7700;\r
+        break;\r
+      case 7703:\r
+        ret = 7702;\r
+        break;\r
+      case 7705:\r
+        ret = 7704;\r
+        break;\r
+      case 7707:\r
+        ret = 7706;\r
+        break;\r
+      case 7709:\r
+        ret = 7708;\r
+        break;\r
+      case 7711:\r
+        ret = 7710;\r
+        break;\r
+      case 7713:\r
+        ret = 7712;\r
+        break;\r
+      case 7715:\r
+        ret = 7714;\r
+        break;\r
+      case 7717:\r
+        ret = 7716;\r
+        break;\r
+      case 7719:\r
+        ret = 7718;\r
+        break;\r
+      case 7721:\r
+        ret = 7720;\r
+        break;\r
+      case 7723:\r
+        ret = 7722;\r
+        break;\r
+      case 7725:\r
+        ret = 7724;\r
+        break;\r
+      case 7727:\r
+        ret = 7726;\r
+        break;\r
+      case 7729:\r
+        ret = 7728;\r
+        break;\r
+      case 7731:\r
+        ret = 7730;\r
+        break;\r
+      case 7733:\r
+        ret = 7732;\r
+        break;\r
+      case 7735:\r
+        ret = 7734;\r
+        break;\r
+      case 7737:\r
+        ret = 7736;\r
+        break;\r
+      case 7739:\r
+        ret = 7738;\r
+        break;\r
+      case 7741:\r
+        ret = 7740;\r
+        break;\r
+      case 7743:\r
+        ret = 7742;\r
+        break;\r
+      case 7745:\r
+        ret = 7744;\r
+        break;\r
+      case 7747:\r
+        ret = 7746;\r
+        break;\r
+      case 7749:\r
+        ret = 7748;\r
+        break;\r
+      case 7751:\r
+        ret = 7750;\r
+        break;\r
+      case 7753:\r
+        ret = 7752;\r
+        break;\r
+      case 7755:\r
+        ret = 7754;\r
+        break;\r
+      case 7757:\r
+        ret = 7756;\r
+        break;\r
+      case 7759:\r
+        ret = 7758;\r
+        break;\r
+      case 7761:\r
+        ret = 7760;\r
+        break;\r
+      case 7763:\r
+        ret = 7762;\r
+        break;\r
+      case 7765:\r
+        ret = 7764;\r
+        break;\r
+      case 7767:\r
+        ret = 7766;\r
+        break;\r
+      case 7769:\r
+        ret = 7768;\r
+        break;\r
+      case 7771:\r
+        ret = 7770;\r
+        break;\r
+      case 7773:\r
+        ret = 7772;\r
+        break;\r
+      case 7775:\r
+        ret = 7774;\r
+        break;\r
+      case 7777:\r
+        ret = 7776;\r
+        break;\r
+      case 7779:\r
+        ret = 7778;\r
+        break;\r
+      case 7781:\r
+        ret = 7780;\r
+        break;\r
+      case 7783:\r
+        ret = 7782;\r
+        break;\r
+      case 7785:\r
+        ret = 7784;\r
+        break;\r
+      case 7787:\r
+        ret = 7786;\r
+        break;\r
+      case 7789:\r
+        ret = 7788;\r
+        break;\r
+      case 7791:\r
+        ret = 7790;\r
+        break;\r
+      case 7793:\r
+        ret = 7792;\r
+        break;\r
+      case 7795:\r
+        ret = 7794;\r
+        break;\r
+      case 7797:\r
+        ret = 7796;\r
+        break;\r
+      case 7799:\r
+        ret = 7798;\r
+        break;\r
+      case 7801:\r
+        ret = 7800;\r
+        break;\r
+      case 7803:\r
+        ret = 7802;\r
+        break;\r
+      case 7805:\r
+        ret = 7804;\r
+        break;\r
+      case 7807:\r
+        ret = 7806;\r
+        break;\r
+      case 7809:\r
+        ret = 7808;\r
+        break;\r
+      case 7811:\r
+        ret = 7810;\r
+        break;\r
+      case 7813:\r
+        ret = 7812;\r
+        break;\r
+      case 7815:\r
+        ret = 7814;\r
+        break;\r
+      case 7817:\r
+        ret = 7816;\r
+        break;\r
+      case 7819:\r
+        ret = 7818;\r
+        break;\r
+      case 7821:\r
+        ret = 7820;\r
+        break;\r
+      case 7823:\r
+        ret = 7822;\r
+        break;\r
+      case 7825:\r
+        ret = 7824;\r
+        break;\r
+      case 7827:\r
+        ret = 7826;\r
+        break;\r
+      case 7829:\r
+        ret = 7828;\r
+        break;\r
+      case 7841:\r
+        ret = 7840;\r
+        break;\r
+      case 7843:\r
+        ret = 7842;\r
+        break;\r
+      case 7845:\r
+        ret = 7844;\r
+        break;\r
+      case 7847:\r
+        ret = 7846;\r
+        break;\r
+      case 7849:\r
+        ret = 7848;\r
+        break;\r
+      case 7851:\r
+        ret = 7850;\r
+        break;\r
+      case 7853:\r
+        ret = 7852;\r
+        break;\r
+      case 7855:\r
+        ret = 7854;\r
+        break;\r
+      case 7857:\r
+        ret = 7856;\r
+        break;\r
+      case 7859:\r
+        ret = 7858;\r
+        break;\r
+      case 7861:\r
+        ret = 7860;\r
+        break;\r
+      case 7863:\r
+        ret = 7862;\r
+        break;\r
+      case 7865:\r
+        ret = 7864;\r
+        break;\r
+      case 7867:\r
+        ret = 7866;\r
+        break;\r
+      case 7869:\r
+        ret = 7868;\r
+        break;\r
+      case 7871:\r
+        ret = 7870;\r
+        break;\r
+      case 7873:\r
+        ret = 7872;\r
+        break;\r
+      case 7875:\r
+        ret = 7874;\r
+        break;\r
+      case 7877:\r
+        ret = 7876;\r
+        break;\r
+      case 7879:\r
+        ret = 7878;\r
+        break;\r
+      case 7881:\r
+        ret = 7880;\r
+        break;\r
+      case 7883:\r
+        ret = 7882;\r
+        break;\r
+      case 7885:\r
+        ret = 7884;\r
+        break;\r
+      case 7887:\r
+        ret = 7886;\r
+        break;\r
+      case 7889:\r
+        ret = 7888;\r
+        break;\r
+      case 7891:\r
+        ret = 7890;\r
+        break;\r
+      case 7893:\r
+        ret = 7892;\r
+        break;\r
+      case 7895:\r
+        ret = 7894;\r
+        break;\r
+      case 7897:\r
+        ret = 7896;\r
+        break;\r
+      case 7899:\r
+        ret = 7898;\r
+        break;\r
+      case 7901:\r
+        ret = 7900;\r
+        break;\r
+      case 7903:\r
+        ret = 7902;\r
+        break;\r
+      case 7905:\r
+        ret = 7904;\r
+        break;\r
+      case 7907:\r
+        ret = 7906;\r
+        break;\r
+      case 7909:\r
+        ret = 7908;\r
+        break;\r
+      case 7911:\r
+        ret = 7910;\r
+        break;\r
+      case 7913:\r
+        ret = 7912;\r
+        break;\r
+      case 7915:\r
+        ret = 7914;\r
+        break;\r
+      case 7917:\r
+        ret = 7916;\r
+        break;\r
+      case 7919:\r
+        ret = 7918;\r
+        break;\r
+      case 7921:\r
+        ret = 7920;\r
+        break;\r
+      case 7923:\r
+        ret = 7922;\r
+        break;\r
+      case 7925:\r
+        ret = 7924;\r
+        break;\r
+      case 7927:\r
+        ret = 7926;\r
+        break;\r
+      case 7929:\r
+        ret = 7928;\r
+        break;\r
+      case 7936:\r
+        ret = 7944;\r
+        break;\r
+      case 7937:\r
+        ret = 7945;\r
+        break;\r
+      case 7938:\r
+        ret = 7946;\r
+        break;\r
+      case 7939:\r
+        ret = 7947;\r
+        break;\r
+      case 7940:\r
+        ret = 7948;\r
+        break;\r
+      case 7941:\r
+        ret = 7949;\r
+        break;\r
+      case 7942:\r
+        ret = 7950;\r
+        break;\r
+      case 7943:\r
+        ret = 7951;\r
+        break;\r
+      case 7952:\r
+        ret = 7960;\r
+        break;\r
+      case 7953:\r
+        ret = 7961;\r
+        break;\r
+      case 7954:\r
+        ret = 7962;\r
+        break;\r
+      case 7955:\r
+        ret = 7963;\r
+        break;\r
+      case 7956:\r
+        ret = 7964;\r
+        break;\r
+      case 7957:\r
+        ret = 7965;\r
+        break;\r
+      case 7968:\r
+        ret = 7976;\r
+        break;\r
+      case 7969:\r
+        ret = 7977;\r
+        break;\r
+      case 7970:\r
+        ret = 7978;\r
+        break;\r
+      case 7971:\r
+        ret = 7979;\r
+        break;\r
+      case 7972:\r
+        ret = 7980;\r
+        break;\r
+      case 7973:\r
+        ret = 7981;\r
+        break;\r
+      case 7974:\r
+        ret = 7982;\r
+        break;\r
+      case 7975:\r
+        ret = 7983;\r
+        break;\r
+      case 7984:\r
+        ret = 7992;\r
+        break;\r
+      case 7985:\r
+        ret = 7993;\r
+        break;\r
+      case 7986:\r
+        ret = 7994;\r
+        break;\r
+      case 7987:\r
+        ret = 7995;\r
+        break;\r
+      case 7988:\r
+        ret = 7996;\r
+        break;\r
+      case 7989:\r
+        ret = 7997;\r
+        break;\r
+      case 7990:\r
+        ret = 7998;\r
+        break;\r
+      case 7991:\r
+        ret = 7999;\r
+        break;\r
+      case 8000:\r
+        ret = 8008;\r
+        break;\r
+      case 8001:\r
+        ret = 8009;\r
+        break;\r
+      case 8002:\r
+        ret = 8010;\r
+        break;\r
+      case 8003:\r
+        ret = 8011;\r
+        break;\r
+      case 8004:\r
+        ret = 8012;\r
+        break;\r
+      case 8005:\r
+        ret = 8013;\r
+        break;\r
+      case 8017:\r
+        ret = 8025;\r
+        break;\r
+      case 8019:\r
+        ret = 8027;\r
+        break;\r
+      case 8021:\r
+        ret = 8029;\r
+        break;\r
+      case 8023:\r
+        ret = 8031;\r
+        break;\r
+      case 8032:\r
+        ret = 8040;\r
+        break;\r
+      case 8033:\r
+        ret = 8041;\r
+        break;\r
+      case 8034:\r
+        ret = 8042;\r
+        break;\r
+      case 8035:\r
+        ret = 8043;\r
+        break;\r
+      case 8036:\r
+        ret = 8044;\r
+        break;\r
+      case 8037:\r
+        ret = 8045;\r
+        break;\r
+      case 8038:\r
+        ret = 8046;\r
+        break;\r
+      case 8039:\r
+        ret = 8047;\r
+        break;\r
+      case 8048:\r
+        ret = 8122;\r
+        break;\r
+      case 8049:\r
+        ret = 8123;\r
+        break;\r
+      case 8050:\r
+        ret = 8136;\r
+        break;\r
+      case 8051:\r
+        ret = 8137;\r
+        break;\r
+      case 8052:\r
+        ret = 8138;\r
+        break;\r
+      case 8053:\r
+        ret = 8139;\r
+        break;\r
+      case 8054:\r
+        ret = 8154;\r
+        break;\r
+      case 8055:\r
+        ret = 8155;\r
+        break;\r
+      case 8056:\r
+        ret = 8184;\r
+        break;\r
+      case 8057:\r
+        ret = 8185;\r
+        break;\r
+      case 8058:\r
+        ret = 8170;\r
+        break;\r
+      case 8059:\r
+        ret = 8171;\r
+        break;\r
+      case 8060:\r
+        ret = 8186;\r
+        break;\r
+      case 8061:\r
+        ret = 8187;\r
+        break;\r
+      case 8064:\r
+        ret = 8072;\r
+        break;\r
+      case 8065:\r
+        ret = 8073;\r
+        break;\r
+      case 8066:\r
+        ret = 8074;\r
+        break;\r
+      case 8067:\r
+        ret = 8075;\r
+        break;\r
+      case 8068:\r
+        ret = 8076;\r
+        break;\r
+      case 8069:\r
+        ret = 8077;\r
+        break;\r
+      case 8070:\r
+        ret = 8078;\r
+        break;\r
+      case 8071:\r
+        ret = 8079;\r
+        break;\r
+      case 8080:\r
+        ret = 8088;\r
+        break;\r
+      case 8081:\r
+        ret = 8089;\r
+        break;\r
+      case 8082:\r
+        ret = 8090;\r
+        break;\r
+      case 8083:\r
+        ret = 8091;\r
+        break;\r
+      case 8084:\r
+        ret = 8092;\r
+        break;\r
+      case 8085:\r
+        ret = 8093;\r
+        break;\r
+      case 8086:\r
+        ret = 8094;\r
+        break;\r
+      case 8087:\r
+        ret = 8095;\r
+        break;\r
+      case 8096:\r
+        ret = 8104;\r
+        break;\r
+      case 8097:\r
+        ret = 8105;\r
+        break;\r
+      case 8098:\r
+        ret = 8106;\r
+        break;\r
+      case 8099:\r
+        ret = 8107;\r
+        break;\r
+      case 8100:\r
+        ret = 8108;\r
+        break;\r
+      case 8101:\r
+        ret = 8109;\r
+        break;\r
+      case 8102:\r
+        ret = 8110;\r
+        break;\r
+      case 8103:\r
+        ret = 8111;\r
+        break;\r
+      case 8112:\r
+        ret = 8120;\r
+        break;\r
+      case 8113:\r
+        ret = 8121;\r
+        break;\r
+      case 8115:\r
+        ret = 8124;\r
+        break;\r
+      case 8131:\r
+        ret = 8140;\r
+        break;\r
+      case 8144:\r
+        ret = 8152;\r
+        break;\r
+      case 8145:\r
+        ret = 8153;\r
+        break;\r
+      case 8160:\r
+        ret = 8168;\r
+        break;\r
+      case 8161:\r
+        ret = 8169;\r
+        break;\r
+      case 8165:\r
+        ret = 8172;\r
+        break;\r
+      case 8179:\r
+        ret = 8188;\r
+        break;\r
+      case 8560:\r
+        ret = 8544;\r
+        break;\r
+      case 8561:\r
+        ret = 8545;\r
+        break;\r
+      case 8562:\r
+        ret = 8546;\r
+        break;\r
+      case 8563:\r
+        ret = 8547;\r
+        break;\r
+      case 8564:\r
+        ret = 8548;\r
+        break;\r
+      case 8565:\r
+        ret = 8549;\r
+        break;\r
+      case 8566:\r
+        ret = 8550;\r
+        break;\r
+      case 8567:\r
+        ret = 8551;\r
+        break;\r
+      case 8568:\r
+        ret = 8552;\r
+        break;\r
+      case 8569:\r
+        ret = 8553;\r
+        break;\r
+      case 8570:\r
+        ret = 8554;\r
+        break;\r
+      case 8571:\r
+        ret = 8555;\r
+        break;\r
+      case 8572:\r
+        ret = 8556;\r
+        break;\r
+      case 8573:\r
+        ret = 8557;\r
+        break;\r
+      case 8574:\r
+        ret = 8558;\r
+        break;\r
+      case 8575:\r
+        ret = 8559;\r
+        break;\r
+      case 9424:\r
+        ret = 9398;\r
+        break;\r
+      case 9425:\r
+        ret = 9399;\r
+        break;\r
+      case 9426:\r
+        ret = 9400;\r
+        break;\r
+      case 9427:\r
+        ret = 9401;\r
+        break;\r
+      case 9428:\r
+        ret = 9402;\r
+        break;\r
+      case 9429:\r
+        ret = 9403;\r
+        break;\r
+      case 9430:\r
+        ret = 9404;\r
+        break;\r
+      case 9431:\r
+        ret = 9405;\r
+        break;\r
+      case 9432:\r
+        ret = 9406;\r
+        break;\r
+      case 9433:\r
+        ret = 9407;\r
+        break;\r
+      case 9434:\r
+        ret = 9408;\r
+        break;\r
+      case 9435:\r
+        ret = 9409;\r
+        break;\r
+      case 9436:\r
+        ret = 9410;\r
+        break;\r
+      case 9437:\r
+        ret = 9411;\r
+        break;\r
+      case 9438:\r
+        ret = 9412;\r
+        break;\r
+      case 9439:\r
+        ret = 9413;\r
+        break;\r
+      case 9440:\r
+        ret = 9414;\r
+        break;\r
+      case 9441:\r
+        ret = 9415;\r
+        break;\r
+      case 9442:\r
+        ret = 9416;\r
+        break;\r
+      case 9443:\r
+        ret = 9417;\r
+        break;\r
+      case 9444:\r
+        ret = 9418;\r
+        break;\r
+      case 9445:\r
+        ret = 9419;\r
+        break;\r
+      case 9446:\r
+        ret = 9420;\r
+        break;\r
+      case 9447:\r
+        ret = 9421;\r
+        break;\r
+      case 9448:\r
+        ret = 9422;\r
+        break;\r
+      case 9449:\r
+        ret = 9423;\r
+        break;\r
+      case 65345:\r
+        ret = 65313;\r
+        break;\r
+      case 65346:\r
+        ret = 65314;\r
+        break;\r
+      case 65347:\r
+        ret = 65315;\r
+        break;\r
+      case 65348:\r
+        ret = 65316;\r
+        break;\r
+      case 65349:\r
+        ret = 65317;\r
+        break;\r
+      case 65350:\r
+        ret = 65318;\r
+        break;\r
+      case 65351:\r
+        ret = 65319;\r
+        break;\r
+      case 65352:\r
+        ret = 65320;\r
+        break;\r
+      case 65353:\r
+        ret = 65321;\r
+        break;\r
+      case 65354:\r
+        ret = 65322;\r
+        break;\r
+      case 65355:\r
+        ret = 65323;\r
+        break;\r
+      case 65356:\r
+        ret = 65324;\r
+        break;\r
+      case 65357:\r
+        ret = 65325;\r
+        break;\r
+      case 65358:\r
+        ret = 65326;\r
+        break;\r
+      case 65359:\r
+        ret = 65327;\r
+        break;\r
+      case 65360:\r
+        ret = 65328;\r
+        break;\r
+      case 65361:\r
+        ret = 65329;\r
+        break;\r
+      case 65362:\r
+        ret = 65330;\r
+        break;\r
+      case 65363:\r
+        ret = 65331;\r
+        break;\r
+      case 65364:\r
+        ret = 65332;\r
+        break;\r
+      case 65365:\r
+        ret = 65333;\r
+        break;\r
+      case 65366:\r
+        ret = 65334;\r
+        break;\r
+      case 65367:\r
+        ret = 65335;\r
+        break;\r
+      case 65368:\r
+        ret = 65336;\r
+        break;\r
+      case 65369:\r
+        ret = 65337;\r
+        break;\r
+      case 65370:\r
+        ret = 65338;\r
+        break;\r
+      }\r
+      return (char) ret;\r
+    }\r
+    return Character.toUpperCase(c);\r
+  }\r
+\r
+  /** Convert a character to lower case. */\r
+  public static char toLowerCase(char c)\r
+  {\r
+    if (java_1_0)\r
+    {\r
+      int ret = (int) c;\r
+      switch (c)\r
+      {\r
+      case 65:\r
+        ret = 97;\r
+        break;\r
+      case 66:\r
+        ret = 98;\r
+        break;\r
+      case 67:\r
+        ret = 99;\r
+        break;\r
+      case 68:\r
+        ret = 100;\r
+        break;\r
+      case 69:\r
+        ret = 101;\r
+        break;\r
+      case 70:\r
+        ret = 102;\r
+        break;\r
+      case 71:\r
+        ret = 103;\r
+        break;\r
+      case 72:\r
+        ret = 104;\r
+        break;\r
+      case 73:\r
+        ret = 105;\r
+        break;\r
+      case 74:\r
+        ret = 106;\r
+        break;\r
+      case 75:\r
+        ret = 107;\r
+        break;\r
+      case 76:\r
+        ret = 108;\r
+        break;\r
+      case 77:\r
+        ret = 109;\r
+        break;\r
+      case 78:\r
+        ret = 110;\r
+        break;\r
+      case 79:\r
+        ret = 111;\r
+        break;\r
+      case 80:\r
+        ret = 112;\r
+        break;\r
+      case 81:\r
+        ret = 113;\r
+        break;\r
+      case 82:\r
+        ret = 114;\r
+        break;\r
+      case 83:\r
+        ret = 115;\r
+        break;\r
+      case 84:\r
+        ret = 116;\r
+        break;\r
+      case 85:\r
+        ret = 117;\r
+        break;\r
+      case 86:\r
+        ret = 118;\r
+        break;\r
+      case 87:\r
+        ret = 119;\r
+        break;\r
+      case 88:\r
+        ret = 120;\r
+        break;\r
+      case 89:\r
+        ret = 121;\r
+        break;\r
+      case 90:\r
+        ret = 122;\r
+        break;\r
+      case 192:\r
+        ret = 224;\r
+        break;\r
+      case 193:\r
+        ret = 225;\r
+        break;\r
+      case 194:\r
+        ret = 226;\r
+        break;\r
+      case 195:\r
+        ret = 227;\r
+        break;\r
+      case 196:\r
+        ret = 228;\r
+        break;\r
+      case 197:\r
+        ret = 229;\r
+        break;\r
+      case 198:\r
+        ret = 230;\r
+        break;\r
+      case 199:\r
+        ret = 231;\r
+        break;\r
+      case 200:\r
+        ret = 232;\r
+        break;\r
+      case 201:\r
+        ret = 233;\r
+        break;\r
+      case 202:\r
+        ret = 234;\r
+        break;\r
+      case 203:\r
+        ret = 235;\r
+        break;\r
+      case 204:\r
+        ret = 236;\r
+        break;\r
+      case 205:\r
+        ret = 237;\r
+        break;\r
+      case 206:\r
+        ret = 238;\r
+        break;\r
+      case 207:\r
+        ret = 239;\r
+        break;\r
+      case 208:\r
+        ret = 240;\r
+        break;\r
+      case 209:\r
+        ret = 241;\r
+        break;\r
+      case 210:\r
+        ret = 242;\r
+        break;\r
+      case 211:\r
+        ret = 243;\r
+        break;\r
+      case 212:\r
+        ret = 244;\r
+        break;\r
+      case 213:\r
+        ret = 245;\r
+        break;\r
+      case 214:\r
+        ret = 246;\r
+        break;\r
+      case 216:\r
+        ret = 248;\r
+        break;\r
+      case 217:\r
+        ret = 249;\r
+        break;\r
+      case 218:\r
+        ret = 250;\r
+        break;\r
+      case 219:\r
+        ret = 251;\r
+        break;\r
+      case 220:\r
+        ret = 252;\r
+        break;\r
+      case 221:\r
+        ret = 253;\r
+        break;\r
+      case 222:\r
+        ret = 254;\r
+        break;\r
+      case 256:\r
+        ret = 257;\r
+        break;\r
+      case 258:\r
+        ret = 259;\r
+        break;\r
+      case 260:\r
+        ret = 261;\r
+        break;\r
+      case 262:\r
+        ret = 263;\r
+        break;\r
+      case 264:\r
+        ret = 265;\r
+        break;\r
+      case 266:\r
+        ret = 267;\r
+        break;\r
+      case 268:\r
+        ret = 269;\r
+        break;\r
+      case 270:\r
+        ret = 271;\r
+        break;\r
+      case 272:\r
+        ret = 273;\r
+        break;\r
+      case 274:\r
+        ret = 275;\r
+        break;\r
+      case 276:\r
+        ret = 277;\r
+        break;\r
+      case 278:\r
+        ret = 279;\r
+        break;\r
+      case 280:\r
+        ret = 281;\r
+        break;\r
+      case 282:\r
+        ret = 283;\r
+        break;\r
+      case 284:\r
+        ret = 285;\r
+        break;\r
+      case 286:\r
+        ret = 287;\r
+        break;\r
+      case 288:\r
+        ret = 289;\r
+        break;\r
+      case 290:\r
+        ret = 291;\r
+        break;\r
+      case 292:\r
+        ret = 293;\r
+        break;\r
+      case 294:\r
+        ret = 295;\r
+        break;\r
+      case 296:\r
+        ret = 297;\r
+        break;\r
+      case 298:\r
+        ret = 299;\r
+        break;\r
+      case 300:\r
+        ret = 301;\r
+        break;\r
+      case 302:\r
+        ret = 303;\r
+        break;\r
+      case 304:\r
+        ret = 105;\r
+        break;\r
+      case 306:\r
+        ret = 307;\r
+        break;\r
+      case 308:\r
+        ret = 309;\r
+        break;\r
+      case 310:\r
+        ret = 311;\r
+        break;\r
+      case 313:\r
+        ret = 314;\r
+        break;\r
+      case 315:\r
+        ret = 316;\r
+        break;\r
+      case 317:\r
+        ret = 318;\r
+        break;\r
+      case 319:\r
+        ret = 320;\r
+        break;\r
+      case 321:\r
+        ret = 322;\r
+        break;\r
+      case 323:\r
+        ret = 324;\r
+        break;\r
+      case 325:\r
+        ret = 326;\r
+        break;\r
+      case 327:\r
+        ret = 328;\r
+        break;\r
+      case 330:\r
+        ret = 331;\r
+        break;\r
+      case 332:\r
+        ret = 333;\r
+        break;\r
+      case 334:\r
+        ret = 335;\r
+        break;\r
+      case 336:\r
+        ret = 337;\r
+        break;\r
+      case 338:\r
+        ret = 339;\r
+        break;\r
+      case 340:\r
+        ret = 341;\r
+        break;\r
+      case 342:\r
+        ret = 343;\r
+        break;\r
+      case 344:\r
+        ret = 345;\r
+        break;\r
+      case 346:\r
+        ret = 347;\r
+        break;\r
+      case 348:\r
+        ret = 349;\r
+        break;\r
+      case 350:\r
+        ret = 351;\r
+        break;\r
+      case 352:\r
+        ret = 353;\r
+        break;\r
+      case 354:\r
+        ret = 355;\r
+        break;\r
+      case 356:\r
+        ret = 357;\r
+        break;\r
+      case 358:\r
+        ret = 359;\r
+        break;\r
+      case 360:\r
+        ret = 361;\r
+        break;\r
+      case 362:\r
+        ret = 363;\r
+        break;\r
+      case 364:\r
+        ret = 365;\r
+        break;\r
+      case 366:\r
+        ret = 367;\r
+        break;\r
+      case 368:\r
+        ret = 369;\r
+        break;\r
+      case 370:\r
+        ret = 371;\r
+        break;\r
+      case 372:\r
+        ret = 373;\r
+        break;\r
+      case 374:\r
+        ret = 375;\r
+        break;\r
+      case 376:\r
+        ret = 255;\r
+        break;\r
+      case 377:\r
+        ret = 378;\r
+        break;\r
+      case 379:\r
+        ret = 380;\r
+        break;\r
+      case 381:\r
+        ret = 382;\r
+        break;\r
+      case 385:\r
+        ret = 595;\r
+        break;\r
+      case 386:\r
+        ret = 387;\r
+        break;\r
+      case 388:\r
+        ret = 389;\r
+        break;\r
+      case 390:\r
+        ret = 596;\r
+        break;\r
+      case 391:\r
+        ret = 392;\r
+        break;\r
+      case 393:\r
+        ret = 598;\r
+        break;\r
+      case 394:\r
+        ret = 599;\r
+        break;\r
+      case 395:\r
+        ret = 396;\r
+        break;\r
+      case 398:\r
+        ret = 600;\r
+        break;\r
+      case 399:\r
+        ret = 601;\r
+        break;\r
+      case 400:\r
+        ret = 603;\r
+        break;\r
+      case 401:\r
+        ret = 402;\r
+        break;\r
+      case 403:\r
+        ret = 608;\r
+        break;\r
+      case 404:\r
+        ret = 611;\r
+        break;\r
+      case 406:\r
+        ret = 617;\r
+        break;\r
+      case 407:\r
+        ret = 616;\r
+        break;\r
+      case 408:\r
+        ret = 409;\r
+        break;\r
+      case 412:\r
+        ret = 623;\r
+        break;\r
+      case 413:\r
+        ret = 626;\r
+        break;\r
+      case 416:\r
+        ret = 417;\r
+        break;\r
+      case 418:\r
+        ret = 419;\r
+        break;\r
+      case 420:\r
+        ret = 421;\r
+        break;\r
+      case 423:\r
+        ret = 424;\r
+        break;\r
+      case 425:\r
+        ret = 643;\r
+        break;\r
+      case 428:\r
+        ret = 429;\r
+        break;\r
+      case 430:\r
+        ret = 648;\r
+        break;\r
+      case 431:\r
+        ret = 432;\r
+        break;\r
+      case 433:\r
+        ret = 650;\r
+        break;\r
+      case 434:\r
+        ret = 651;\r
+        break;\r
+      case 435:\r
+        ret = 436;\r
+        break;\r
+      case 437:\r
+        ret = 438;\r
+        break;\r
+      case 439:\r
+        ret = 658;\r
+        break;\r
+      case 440:\r
+        ret = 441;\r
+        break;\r
+      case 444:\r
+        ret = 445;\r
+        break;\r
+      case 452:\r
+        ret = 454;\r
+        break;\r
+      case 453:\r
+        ret = 454;\r
+        break;\r
+      case 455:\r
+        ret = 457;\r
+        break;\r
+      case 456:\r
+        ret = 457;\r
+        break;\r
+      case 458:\r
+        ret = 460;\r
+        break;\r
+      case 459:\r
+        ret = 460;\r
+        break;\r
+      case 461:\r
+        ret = 462;\r
+        break;\r
+      case 463:\r
+        ret = 464;\r
+        break;\r
+      case 465:\r
+        ret = 466;\r
+        break;\r
+      case 467:\r
+        ret = 468;\r
+        break;\r
+      case 469:\r
+        ret = 470;\r
+        break;\r
+      case 471:\r
+        ret = 472;\r
+        break;\r
+      case 473:\r
+        ret = 474;\r
+        break;\r
+      case 475:\r
+        ret = 476;\r
+        break;\r
+      case 478:\r
+        ret = 479;\r
+        break;\r
+      case 480:\r
+        ret = 481;\r
+        break;\r
+      case 482:\r
+        ret = 483;\r
+        break;\r
+      case 484:\r
+        ret = 485;\r
+        break;\r
+      case 486:\r
+        ret = 487;\r
+        break;\r
+      case 488:\r
+        ret = 489;\r
+        break;\r
+      case 490:\r
+        ret = 491;\r
+        break;\r
+      case 492:\r
+        ret = 493;\r
+        break;\r
+      case 494:\r
+        ret = 495;\r
+        break;\r
+      case 497:\r
+        ret = 499;\r
+        break;\r
+      case 498:\r
+        ret = 499;\r
+        break;\r
+      case 500:\r
+        ret = 501;\r
+        break;\r
+      case 506:\r
+        ret = 507;\r
+        break;\r
+      case 508:\r
+        ret = 509;\r
+        break;\r
+      case 510:\r
+        ret = 511;\r
+        break;\r
+      case 512:\r
+        ret = 513;\r
+        break;\r
+      case 514:\r
+        ret = 515;\r
+        break;\r
+      case 516:\r
+        ret = 517;\r
+        break;\r
+      case 518:\r
+        ret = 519;\r
+        break;\r
+      case 520:\r
+        ret = 521;\r
+        break;\r
+      case 522:\r
+        ret = 523;\r
+        break;\r
+      case 524:\r
+        ret = 525;\r
+        break;\r
+      case 526:\r
+        ret = 527;\r
+        break;\r
+      case 528:\r
+        ret = 529;\r
+        break;\r
+      case 530:\r
+        ret = 531;\r
+        break;\r
+      case 532:\r
+        ret = 533;\r
+        break;\r
+      case 534:\r
+        ret = 535;\r
+        break;\r
+      case 902:\r
+        ret = 940;\r
+        break;\r
+      case 904:\r
+        ret = 941;\r
+        break;\r
+      case 905:\r
+        ret = 942;\r
+        break;\r
+      case 906:\r
+        ret = 943;\r
+        break;\r
+      case 908:\r
+        ret = 972;\r
+        break;\r
+      case 910:\r
+        ret = 973;\r
+        break;\r
+      case 911:\r
+        ret = 974;\r
+        break;\r
+      case 913:\r
+        ret = 945;\r
+        break;\r
+      case 914:\r
+        ret = 946;\r
+        break;\r
+      case 915:\r
+        ret = 947;\r
+        break;\r
+      case 916:\r
+        ret = 948;\r
+        break;\r
+      case 917:\r
+        ret = 949;\r
+        break;\r
+      case 918:\r
+        ret = 950;\r
+        break;\r
+      case 919:\r
+        ret = 951;\r
+        break;\r
+      case 920:\r
+        ret = 952;\r
+        break;\r
+      case 921:\r
+        ret = 953;\r
+        break;\r
+      case 922:\r
+        ret = 954;\r
+        break;\r
+      case 923:\r
+        ret = 955;\r
+        break;\r
+      case 924:\r
+        ret = 956;\r
+        break;\r
+      case 925:\r
+        ret = 957;\r
+        break;\r
+      case 926:\r
+        ret = 958;\r
+        break;\r
+      case 927:\r
+        ret = 959;\r
+        break;\r
+      case 928:\r
+        ret = 960;\r
+        break;\r
+      case 929:\r
+        ret = 961;\r
+        break;\r
+      case 931:\r
+        ret = 963;\r
+        break;\r
+      case 932:\r
+        ret = 964;\r
+        break;\r
+      case 933:\r
+        ret = 965;\r
+        break;\r
+      case 934:\r
+        ret = 966;\r
+        break;\r
+      case 935:\r
+        ret = 967;\r
+        break;\r
+      case 936:\r
+        ret = 968;\r
+        break;\r
+      case 937:\r
+        ret = 969;\r
+        break;\r
+      case 938:\r
+        ret = 970;\r
+        break;\r
+      case 939:\r
+        ret = 971;\r
+        break;\r
+      case 994:\r
+        ret = 995;\r
+        break;\r
+      case 996:\r
+        ret = 997;\r
+        break;\r
+      case 998:\r
+        ret = 999;\r
+        break;\r
+      case 1000:\r
+        ret = 1001;\r
+        break;\r
+      case 1002:\r
+        ret = 1003;\r
+        break;\r
+      case 1004:\r
+        ret = 1005;\r
+        break;\r
+      case 1006:\r
+        ret = 1007;\r
+        break;\r
+      case 1025:\r
+        ret = 1105;\r
+        break;\r
+      case 1026:\r
+        ret = 1106;\r
+        break;\r
+      case 1027:\r
+        ret = 1107;\r
+        break;\r
+      case 1028:\r
+        ret = 1108;\r
+        break;\r
+      case 1029:\r
+        ret = 1109;\r
+        break;\r
+      case 1030:\r
+        ret = 1110;\r
+        break;\r
+      case 1031:\r
+        ret = 1111;\r
+        break;\r
+      case 1032:\r
+        ret = 1112;\r
+        break;\r
+      case 1033:\r
+        ret = 1113;\r
+        break;\r
+      case 1034:\r
+        ret = 1114;\r
+        break;\r
+      case 1035:\r
+        ret = 1115;\r
+        break;\r
+      case 1036:\r
+        ret = 1116;\r
+        break;\r
+      case 1038:\r
+        ret = 1118;\r
+        break;\r
+      case 1039:\r
+        ret = 1119;\r
+        break;\r
+      case 1040:\r
+        ret = 1072;\r
+        break;\r
+      case 1041:\r
+        ret = 1073;\r
+        break;\r
+      case 1042:\r
+        ret = 1074;\r
+        break;\r
+      case 1043:\r
+        ret = 1075;\r
+        break;\r
+      case 1044:\r
+        ret = 1076;\r
+        break;\r
+      case 1045:\r
+        ret = 1077;\r
+        break;\r
+      case 1046:\r
+        ret = 1078;\r
+        break;\r
+      case 1047:\r
+        ret = 1079;\r
+        break;\r
+      case 1048:\r
+        ret = 1080;\r
+        break;\r
+      case 1049:\r
+        ret = 1081;\r
+        break;\r
+      case 1050:\r
+        ret = 1082;\r
+        break;\r
+      case 1051:\r
+        ret = 1083;\r
+        break;\r
+      case 1052:\r
+        ret = 1084;\r
+        break;\r
+      case 1053:\r
+        ret = 1085;\r
+        break;\r
+      case 1054:\r
+        ret = 1086;\r
+        break;\r
+      case 1055:\r
+        ret = 1087;\r
+        break;\r
+      case 1056:\r
+        ret = 1088;\r
+        break;\r
+      case 1057:\r
+        ret = 1089;\r
+        break;\r
+      case 1058:\r
+        ret = 1090;\r
+        break;\r
+      case 1059:\r
+        ret = 1091;\r
+        break;\r
+      case 1060:\r
+        ret = 1092;\r
+        break;\r
+      case 1061:\r
+        ret = 1093;\r
+        break;\r
+      case 1062:\r
+        ret = 1094;\r
+        break;\r
+      case 1063:\r
+        ret = 1095;\r
+        break;\r
+      case 1064:\r
+        ret = 1096;\r
+        break;\r
+      case 1065:\r
+        ret = 1097;\r
+        break;\r
+      case 1066:\r
+        ret = 1098;\r
+        break;\r
+      case 1067:\r
+        ret = 1099;\r
+        break;\r
+      case 1068:\r
+        ret = 1100;\r
+        break;\r
+      case 1069:\r
+        ret = 1101;\r
+        break;\r
+      case 1070:\r
+        ret = 1102;\r
+        break;\r
+      case 1071:\r
+        ret = 1103;\r
+        break;\r
+      case 1120:\r
+        ret = 1121;\r
+        break;\r
+      case 1122:\r
+        ret = 1123;\r
+        break;\r
+      case 1124:\r
+        ret = 1125;\r
+        break;\r
+      case 1126:\r
+        ret = 1127;\r
+        break;\r
+      case 1128:\r
+        ret = 1129;\r
+        break;\r
+      case 1130:\r
+        ret = 1131;\r
+        break;\r
+      case 1132:\r
+        ret = 1133;\r
+        break;\r
+      case 1134:\r
+        ret = 1135;\r
+        break;\r
+      case 1136:\r
+        ret = 1137;\r
+        break;\r
+      case 1138:\r
+        ret = 1139;\r
+        break;\r
+      case 1140:\r
+        ret = 1141;\r
+        break;\r
+      case 1142:\r
+        ret = 1143;\r
+        break;\r
+      case 1144:\r
+        ret = 1145;\r
+        break;\r
+      case 1146:\r
+        ret = 1147;\r
+        break;\r
+      case 1148:\r
+        ret = 1149;\r
+        break;\r
+      case 1150:\r
+        ret = 1151;\r
+        break;\r
+      case 1152:\r
+        ret = 1153;\r
+        break;\r
+      case 1168:\r
+        ret = 1169;\r
+        break;\r
+      case 1170:\r
+        ret = 1171;\r
+        break;\r
+      case 1172:\r
+        ret = 1173;\r
+        break;\r
+      case 1174:\r
+        ret = 1175;\r
+        break;\r
+      case 1176:\r
+        ret = 1177;\r
+        break;\r
+      case 1178:\r
+        ret = 1179;\r
+        break;\r
+      case 1180:\r
+        ret = 1181;\r
+        break;\r
+      case 1182:\r
+        ret = 1183;\r
+        break;\r
+      case 1184:\r
+        ret = 1185;\r
+        break;\r
+      case 1186:\r
+        ret = 1187;\r
+        break;\r
+      case 1188:\r
+        ret = 1189;\r
+        break;\r
+      case 1190:\r
+        ret = 1191;\r
+        break;\r
+      case 1192:\r
+        ret = 1193;\r
+        break;\r
+      case 1194:\r
+        ret = 1195;\r
+        break;\r
+      case 1196:\r
+        ret = 1197;\r
+        break;\r
+      case 1198:\r
+        ret = 1199;\r
+        break;\r
+      case 1200:\r
+        ret = 1201;\r
+        break;\r
+      case 1202:\r
+        ret = 1203;\r
+        break;\r
+      case 1204:\r
+        ret = 1205;\r
+        break;\r
+      case 1206:\r
+        ret = 1207;\r
+        break;\r
+      case 1208:\r
+        ret = 1209;\r
+        break;\r
+      case 1210:\r
+        ret = 1211;\r
+        break;\r
+      case 1212:\r
+        ret = 1213;\r
+        break;\r
+      case 1214:\r
+        ret = 1215;\r
+        break;\r
+      case 1217:\r
+        ret = 1218;\r
+        break;\r
+      case 1219:\r
+        ret = 1220;\r
+        break;\r
+      case 1223:\r
+        ret = 1224;\r
+        break;\r
+      case 1227:\r
+        ret = 1228;\r
+        break;\r
+      case 1232:\r
+        ret = 1233;\r
+        break;\r
+      case 1234:\r
+        ret = 1235;\r
+        break;\r
+      case 1236:\r
+        ret = 1237;\r
+        break;\r
+      case 1238:\r
+        ret = 1239;\r
+        break;\r
+      case 1240:\r
+        ret = 1241;\r
+        break;\r
+      case 1242:\r
+        ret = 1243;\r
+        break;\r
+      case 1244:\r
+        ret = 1245;\r
+        break;\r
+      case 1246:\r
+        ret = 1247;\r
+        break;\r
+      case 1248:\r
+        ret = 1249;\r
+        break;\r
+      case 1250:\r
+        ret = 1251;\r
+        break;\r
+      case 1252:\r
+        ret = 1253;\r
+        break;\r
+      case 1254:\r
+        ret = 1255;\r
+        break;\r
+      case 1256:\r
+        ret = 1257;\r
+        break;\r
+      case 1258:\r
+        ret = 1259;\r
+        break;\r
+      case 1262:\r
+        ret = 1263;\r
+        break;\r
+      case 1264:\r
+        ret = 1265;\r
+        break;\r
+      case 1266:\r
+        ret = 1267;\r
+        break;\r
+      case 1268:\r
+        ret = 1269;\r
+        break;\r
+      case 1272:\r
+        ret = 1273;\r
+        break;\r
+      case 1329:\r
+        ret = 1377;\r
+        break;\r
+      case 1330:\r
+        ret = 1378;\r
+        break;\r
+      case 1331:\r
+        ret = 1379;\r
+        break;\r
+      case 1332:\r
+        ret = 1380;\r
+        break;\r
+      case 1333:\r
+        ret = 1381;\r
+        break;\r
+      case 1334:\r
+        ret = 1382;\r
+        break;\r
+      case 1335:\r
+        ret = 1383;\r
+        break;\r
+      case 1336:\r
+        ret = 1384;\r
+        break;\r
+      case 1337:\r
+        ret = 1385;\r
+        break;\r
+      case 1338:\r
+        ret = 1386;\r
+        break;\r
+      case 1339:\r
+        ret = 1387;\r
+        break;\r
+      case 1340:\r
+        ret = 1388;\r
+        break;\r
+      case 1341:\r
+        ret = 1389;\r
+        break;\r
+      case 1342:\r
+        ret = 1390;\r
+        break;\r
+      case 1343:\r
+        ret = 1391;\r
+        break;\r
+      case 1344:\r
+        ret = 1392;\r
+        break;\r
+      case 1345:\r
+        ret = 1393;\r
+        break;\r
+      case 1346:\r
+        ret = 1394;\r
+        break;\r
+      case 1347:\r
+        ret = 1395;\r
+        break;\r
+      case 1348:\r
+        ret = 1396;\r
+        break;\r
+      case 1349:\r
+        ret = 1397;\r
+        break;\r
+      case 1350:\r
+        ret = 1398;\r
+        break;\r
+      case 1351:\r
+        ret = 1399;\r
+        break;\r
+      case 1352:\r
+        ret = 1400;\r
+        break;\r
+      case 1353:\r
+        ret = 1401;\r
+        break;\r
+      case 1354:\r
+        ret = 1402;\r
+        break;\r
+      case 1355:\r
+        ret = 1403;\r
+        break;\r
+      case 1356:\r
+        ret = 1404;\r
+        break;\r
+      case 1357:\r
+        ret = 1405;\r
+        break;\r
+      case 1358:\r
+        ret = 1406;\r
+        break;\r
+      case 1359:\r
+        ret = 1407;\r
+        break;\r
+      case 1360:\r
+        ret = 1408;\r
+        break;\r
+      case 1361:\r
+        ret = 1409;\r
+        break;\r
+      case 1362:\r
+        ret = 1410;\r
+        break;\r
+      case 1363:\r
+        ret = 1411;\r
+        break;\r
+      case 1364:\r
+        ret = 1412;\r
+        break;\r
+      case 1365:\r
+        ret = 1413;\r
+        break;\r
+      case 1366:\r
+        ret = 1414;\r
+        break;\r
+      case 4256:\r
+        ret = 4304;\r
+        break;\r
+      case 4257:\r
+        ret = 4305;\r
+        break;\r
+      case 4258:\r
+        ret = 4306;\r
+        break;\r
+      case 4259:\r
+        ret = 4307;\r
+        break;\r
+      case 4260:\r
+        ret = 4308;\r
+        break;\r
+      case 4261:\r
+        ret = 4309;\r
+        break;\r
+      case 4262:\r
+        ret = 4310;\r
+        break;\r
+      case 4263:\r
+        ret = 4311;\r
+        break;\r
+      case 4264:\r
+        ret = 4312;\r
+        break;\r
+      case 4265:\r
+        ret = 4313;\r
+        break;\r
+      case 4266:\r
+        ret = 4314;\r
+        break;\r
+      case 4267:\r
+        ret = 4315;\r
+        break;\r
+      case 4268:\r
+        ret = 4316;\r
+        break;\r
+      case 4269:\r
+        ret = 4317;\r
+        break;\r
+      case 4270:\r
+        ret = 4318;\r
+        break;\r
+      case 4271:\r
+        ret = 4319;\r
+        break;\r
+      case 4272:\r
+        ret = 4320;\r
+        break;\r
+      case 4273:\r
+        ret = 4321;\r
+        break;\r
+      case 4274:\r
+        ret = 4322;\r
+        break;\r
+      case 4275:\r
+        ret = 4323;\r
+        break;\r
+      case 4276:\r
+        ret = 4324;\r
+        break;\r
+      case 4277:\r
+        ret = 4325;\r
+        break;\r
+      case 4278:\r
+        ret = 4326;\r
+        break;\r
+      case 4279:\r
+        ret = 4327;\r
+        break;\r
+      case 4280:\r
+        ret = 4328;\r
+        break;\r
+      case 4281:\r
+        ret = 4329;\r
+        break;\r
+      case 4282:\r
+        ret = 4330;\r
+        break;\r
+      case 4283:\r
+        ret = 4331;\r
+        break;\r
+      case 4284:\r
+        ret = 4332;\r
+        break;\r
+      case 4285:\r
+        ret = 4333;\r
+        break;\r
+      case 4286:\r
+        ret = 4334;\r
+        break;\r
+      case 4287:\r
+        ret = 4335;\r
+        break;\r
+      case 4288:\r
+        ret = 4336;\r
+        break;\r
+      case 4289:\r
+        ret = 4337;\r
+        break;\r
+      case 4290:\r
+        ret = 4338;\r
+        break;\r
+      case 4291:\r
+        ret = 4339;\r
+        break;\r
+      case 4292:\r
+        ret = 4340;\r
+        break;\r
+      case 4293:\r
+        ret = 4341;\r
+        break;\r
+      case 7680:\r
+        ret = 7681;\r
+        break;\r
+      case 7682:\r
+        ret = 7683;\r
+        break;\r
+      case 7684:\r
+        ret = 7685;\r
+        break;\r
+      case 7686:\r
+        ret = 7687;\r
+        break;\r
+      case 7688:\r
+        ret = 7689;\r
+        break;\r
+      case 7690:\r
+        ret = 7691;\r
+        break;\r
+      case 7692:\r
+        ret = 7693;\r
+        break;\r
+      case 7694:\r
+        ret = 7695;\r
+        break;\r
+      case 7696:\r
+        ret = 7697;\r
+        break;\r
+      case 7698:\r
+        ret = 7699;\r
+        break;\r
+      case 7700:\r
+        ret = 7701;\r
+        break;\r
+      case 7702:\r
+        ret = 7703;\r
+        break;\r
+      case 7704:\r
+        ret = 7705;\r
+        break;\r
+      case 7706:\r
+        ret = 7707;\r
+        break;\r
+      case 7708:\r
+        ret = 7709;\r
+        break;\r
+      case 7710:\r
+        ret = 7711;\r
+        break;\r
+      case 7712:\r
+        ret = 7713;\r
+        break;\r
+      case 7714:\r
+        ret = 7715;\r
+        break;\r
+      case 7716:\r
+        ret = 7717;\r
+        break;\r
+      case 7718:\r
+        ret = 7719;\r
+        break;\r
+      case 7720:\r
+        ret = 7721;\r
+        break;\r
+      case 7722:\r
+        ret = 7723;\r
+        break;\r
+      case 7724:\r
+        ret = 7725;\r
+        break;\r
+      case 7726:\r
+        ret = 7727;\r
+        break;\r
+      case 7728:\r
+        ret = 7729;\r
+        break;\r
+      case 7730:\r
+        ret = 7731;\r
+        break;\r
+      case 7732:\r
+        ret = 7733;\r
+        break;\r
+      case 7734:\r
+        ret = 7735;\r
+        break;\r
+      case 7736:\r
+        ret = 7737;\r
+        break;\r
+      case 7738:\r
+        ret = 7739;\r
+        break;\r
+      case 7740:\r
+        ret = 7741;\r
+        break;\r
+      case 7742:\r
+        ret = 7743;\r
+        break;\r
+      case 7744:\r
+        ret = 7745;\r
+        break;\r
+      case 7746:\r
+        ret = 7747;\r
+        break;\r
+      case 7748:\r
+        ret = 7749;\r
+        break;\r
+      case 7750:\r
+        ret = 7751;\r
+        break;\r
+      case 7752:\r
+        ret = 7753;\r
+        break;\r
+      case 7754:\r
+        ret = 7755;\r
+        break;\r
+      case 7756:\r
+        ret = 7757;\r
+        break;\r
+      case 7758:\r
+        ret = 7759;\r
+        break;\r
+      case 7760:\r
+        ret = 7761;\r
+        break;\r
+      case 7762:\r
+        ret = 7763;\r
+        break;\r
+      case 7764:\r
+        ret = 7765;\r
+        break;\r
+      case 7766:\r
+        ret = 7767;\r
+        break;\r
+      case 7768:\r
+        ret = 7769;\r
+        break;\r
+      case 7770:\r
+        ret = 7771;\r
+        break;\r
+      case 7772:\r
+        ret = 7773;\r
+        break;\r
+      case 7774:\r
+        ret = 7775;\r
+        break;\r
+      case 7776:\r
+        ret = 7777;\r
+        break;\r
+      case 7778:\r
+        ret = 7779;\r
+        break;\r
+      case 7780:\r
+        ret = 7781;\r
+        break;\r
+      case 7782:\r
+        ret = 7783;\r
+        break;\r
+      case 7784:\r
+        ret = 7785;\r
+        break;\r
+      case 7786:\r
+        ret = 7787;\r
+        break;\r
+      case 7788:\r
+        ret = 7789;\r
+        break;\r
+      case 7790:\r
+        ret = 7791;\r
+        break;\r
+      case 7792:\r
+        ret = 7793;\r
+        break;\r
+      case 7794:\r
+        ret = 7795;\r
+        break;\r
+      case 7796:\r
+        ret = 7797;\r
+        break;\r
+      case 7798:\r
+        ret = 7799;\r
+        break;\r
+      case 7800:\r
+        ret = 7801;\r
+        break;\r
+      case 7802:\r
+        ret = 7803;\r
+        break;\r
+      case 7804:\r
+        ret = 7805;\r
+        break;\r
+      case 7806:\r
+        ret = 7807;\r
+        break;\r
+      case 7808:\r
+        ret = 7809;\r
+        break;\r
+      case 7810:\r
+        ret = 7811;\r
+        break;\r
+      case 7812:\r
+        ret = 7813;\r
+        break;\r
+      case 7814:\r
+        ret = 7815;\r
+        break;\r
+      case 7816:\r
+        ret = 7817;\r
+        break;\r
+      case 7818:\r
+        ret = 7819;\r
+        break;\r
+      case 7820:\r
+        ret = 7821;\r
+        break;\r
+      case 7822:\r
+        ret = 7823;\r
+        break;\r
+      case 7824:\r
+        ret = 7825;\r
+        break;\r
+      case 7826:\r
+        ret = 7827;\r
+        break;\r
+      case 7828:\r
+        ret = 7829;\r
+        break;\r
+      case 7840:\r
+        ret = 7841;\r
+        break;\r
+      case 7842:\r
+        ret = 7843;\r
+        break;\r
+      case 7844:\r
+        ret = 7845;\r
+        break;\r
+      case 7846:\r
+        ret = 7847;\r
+        break;\r
+      case 7848:\r
+        ret = 7849;\r
+        break;\r
+      case 7850:\r
+        ret = 7851;\r
+        break;\r
+      case 7852:\r
+        ret = 7853;\r
+        break;\r
+      case 7854:\r
+        ret = 7855;\r
+        break;\r
+      case 7856:\r
+        ret = 7857;\r
+        break;\r
+      case 7858:\r
+        ret = 7859;\r
+        break;\r
+      case 7860:\r
+        ret = 7861;\r
+        break;\r
+      case 7862:\r
+        ret = 7863;\r
+        break;\r
+      case 7864:\r
+        ret = 7865;\r
+        break;\r
+      case 7866:\r
+        ret = 7867;\r
+        break;\r
+      case 7868:\r
+        ret = 7869;\r
+        break;\r
+      case 7870:\r
+        ret = 7871;\r
+        break;\r
+      case 7872:\r
+        ret = 7873;\r
+        break;\r
+      case 7874:\r
+        ret = 7875;\r
+        break;\r
+      case 7876:\r
+        ret = 7877;\r
+        break;\r
+      case 7878:\r
+        ret = 7879;\r
+        break;\r
+      case 7880:\r
+        ret = 7881;\r
+        break;\r
+      case 7882:\r
+        ret = 7883;\r
+        break;\r
+      case 7884:\r
+        ret = 7885;\r
+        break;\r
+      case 7886:\r
+        ret = 7887;\r
+        break;\r
+      case 7888:\r
+        ret = 7889;\r
+        break;\r
+      case 7890:\r
+        ret = 7891;\r
+        break;\r
+      case 7892:\r
+        ret = 7893;\r
+        break;\r
+      case 7894:\r
+        ret = 7895;\r
+        break;\r
+      case 7896:\r
+        ret = 7897;\r
+        break;\r
+      case 7898:\r
+        ret = 7899;\r
+        break;\r
+      case 7900:\r
+        ret = 7901;\r
+        break;\r
+      case 7902:\r
+        ret = 7903;\r
+        break;\r
+      case 7904:\r
+        ret = 7905;\r
+        break;\r
+      case 7906:\r
+        ret = 7907;\r
+        break;\r
+      case 7908:\r
+        ret = 7909;\r
+        break;\r
+      case 7910:\r
+        ret = 7911;\r
+        break;\r
+      case 7912:\r
+        ret = 7913;\r
+        break;\r
+      case 7914:\r
+        ret = 7915;\r
+        break;\r
+      case 7916:\r
+        ret = 7917;\r
+        break;\r
+      case 7918:\r
+        ret = 7919;\r
+        break;\r
+      case 7920:\r
+        ret = 7921;\r
+        break;\r
+      case 7922:\r
+        ret = 7923;\r
+        break;\r
+      case 7924:\r
+        ret = 7925;\r
+        break;\r
+      case 7926:\r
+        ret = 7927;\r
+        break;\r
+      case 7928:\r
+        ret = 7929;\r
+        break;\r
+      case 7944:\r
+        ret = 7936;\r
+        break;\r
+      case 7945:\r
+        ret = 7937;\r
+        break;\r
+      case 7946:\r
+        ret = 7938;\r
+        break;\r
+      case 7947:\r
+        ret = 7939;\r
+        break;\r
+      case 7948:\r
+        ret = 7940;\r
+        break;\r
+      case 7949:\r
+        ret = 7941;\r
+        break;\r
+      case 7950:\r
+        ret = 7942;\r
+        break;\r
+      case 7951:\r
+        ret = 7943;\r
+        break;\r
+      case 7960:\r
+        ret = 7952;\r
+        break;\r
+      case 7961:\r
+        ret = 7953;\r
+        break;\r
+      case 7962:\r
+        ret = 7954;\r
+        break;\r
+      case 7963:\r
+        ret = 7955;\r
+        break;\r
+      case 7964:\r
+        ret = 7956;\r
+        break;\r
+      case 7965:\r
+        ret = 7957;\r
+        break;\r
+      case 7976:\r
+        ret = 7968;\r
+        break;\r
+      case 7977:\r
+        ret = 7969;\r
+        break;\r
+      case 7978:\r
+        ret = 7970;\r
+        break;\r
+      case 7979:\r
+        ret = 7971;\r
+        break;\r
+      case 7980:\r
+        ret = 7972;\r
+        break;\r
+      case 7981:\r
+        ret = 7973;\r
+        break;\r
+      case 7982:\r
+        ret = 7974;\r
+        break;\r
+      case 7983:\r
+        ret = 7975;\r
+        break;\r
+      case 7992:\r
+        ret = 7984;\r
+        break;\r
+      case 7993:\r
+        ret = 7985;\r
+        break;\r
+      case 7994:\r
+        ret = 7986;\r
+        break;\r
+      case 7995:\r
+        ret = 7987;\r
+        break;\r
+      case 7996:\r
+        ret = 7988;\r
+        break;\r
+      case 7997:\r
+        ret = 7989;\r
+        break;\r
+      case 7998:\r
+        ret = 7990;\r
+        break;\r
+      case 7999:\r
+        ret = 7991;\r
+        break;\r
+      case 8008:\r
+        ret = 8000;\r
+        break;\r
+      case 8009:\r
+        ret = 8001;\r
+        break;\r
+      case 8010:\r
+        ret = 8002;\r
+        break;\r
+      case 8011:\r
+        ret = 8003;\r
+        break;\r
+      case 8012:\r
+        ret = 8004;\r
+        break;\r
+      case 8013:\r
+        ret = 8005;\r
+        break;\r
+      case 8025:\r
+        ret = 8017;\r
+        break;\r
+      case 8027:\r
+        ret = 8019;\r
+        break;\r
+      case 8029:\r
+        ret = 8021;\r
+        break;\r
+      case 8031:\r
+        ret = 8023;\r
+        break;\r
+      case 8040:\r
+        ret = 8032;\r
+        break;\r
+      case 8041:\r
+        ret = 8033;\r
+        break;\r
+      case 8042:\r
+        ret = 8034;\r
+        break;\r
+      case 8043:\r
+        ret = 8035;\r
+        break;\r
+      case 8044:\r
+        ret = 8036;\r
+        break;\r
+      case 8045:\r
+        ret = 8037;\r
+        break;\r
+      case 8046:\r
+        ret = 8038;\r
+        break;\r
+      case 8047:\r
+        ret = 8039;\r
+        break;\r
+      case 8072:\r
+        ret = 8064;\r
+        break;\r
+      case 8073:\r
+        ret = 8065;\r
+        break;\r
+      case 8074:\r
+        ret = 8066;\r
+        break;\r
+      case 8075:\r
+        ret = 8067;\r
+        break;\r
+      case 8076:\r
+        ret = 8068;\r
+        break;\r
+      case 8077:\r
+        ret = 8069;\r
+        break;\r
+      case 8078:\r
+        ret = 8070;\r
+        break;\r
+      case 8079:\r
+        ret = 8071;\r
+        break;\r
+      case 8088:\r
+        ret = 8080;\r
+        break;\r
+      case 8089:\r
+        ret = 8081;\r
+        break;\r
+      case 8090:\r
+        ret = 8082;\r
+        break;\r
+      case 8091:\r
+        ret = 8083;\r
+        break;\r
+      case 8092:\r
+        ret = 8084;\r
+        break;\r
+      case 8093:\r
+        ret = 8085;\r
+        break;\r
+      case 8094:\r
+        ret = 8086;\r
+        break;\r
+      case 8095:\r
+        ret = 8087;\r
+        break;\r
+      case 8104:\r
+        ret = 8096;\r
+        break;\r
+      case 8105:\r
+        ret = 8097;\r
+        break;\r
+      case 8106:\r
+        ret = 8098;\r
+        break;\r
+      case 8107:\r
+        ret = 8099;\r
+        break;\r
+      case 8108:\r
+        ret = 8100;\r
+        break;\r
+      case 8109:\r
+        ret = 8101;\r
+        break;\r
+      case 8110:\r
+        ret = 8102;\r
+        break;\r
+      case 8111:\r
+        ret = 8103;\r
+        break;\r
+      case 8120:\r
+        ret = 8112;\r
+        break;\r
+      case 8121:\r
+        ret = 8113;\r
+        break;\r
+      case 8122:\r
+        ret = 8048;\r
+        break;\r
+      case 8123:\r
+        ret = 8049;\r
+        break;\r
+      case 8124:\r
+        ret = 8115;\r
+        break;\r
+      case 8136:\r
+        ret = 8050;\r
+        break;\r
+      case 8137:\r
+        ret = 8051;\r
+        break;\r
+      case 8138:\r
+        ret = 8052;\r
+        break;\r
+      case 8139:\r
+        ret = 8053;\r
+        break;\r
+      case 8140:\r
+        ret = 8131;\r
+        break;\r
+      case 8152:\r
+        ret = 8144;\r
+        break;\r
+      case 8153:\r
+        ret = 8145;\r
+        break;\r
+      case 8154:\r
+        ret = 8054;\r
+        break;\r
+      case 8155:\r
+        ret = 8055;\r
+        break;\r
+      case 8168:\r
+        ret = 8160;\r
+        break;\r
+      case 8169:\r
+        ret = 8161;\r
+        break;\r
+      case 8170:\r
+        ret = 8058;\r
+        break;\r
+      case 8171:\r
+        ret = 8059;\r
+        break;\r
+      case 8172:\r
+        ret = 8165;\r
+        break;\r
+      case 8184:\r
+        ret = 8056;\r
+        break;\r
+      case 8185:\r
+        ret = 8057;\r
+        break;\r
+      case 8186:\r
+        ret = 8060;\r
+        break;\r
+      case 8187:\r
+        ret = 8061;\r
+        break;\r
+      case 8188:\r
+        ret = 8179;\r
+        break;\r
+      case 8544:\r
+        ret = 8560;\r
+        break;\r
+      case 8545:\r
+        ret = 8561;\r
+        break;\r
+      case 8546:\r
+        ret = 8562;\r
+        break;\r
+      case 8547:\r
+        ret = 8563;\r
+        break;\r
+      case 8548:\r
+        ret = 8564;\r
+        break;\r
+      case 8549:\r
+        ret = 8565;\r
+        break;\r
+      case 8550:\r
+        ret = 8566;\r
+        break;\r
+      case 8551:\r
+        ret = 8567;\r
+        break;\r
+      case 8552:\r
+        ret = 8568;\r
+        break;\r
+      case 8553:\r
+        ret = 8569;\r
+        break;\r
+      case 8554:\r
+        ret = 8570;\r
+        break;\r
+      case 8555:\r
+        ret = 8571;\r
+        break;\r
+      case 8556:\r
+        ret = 8572;\r
+        break;\r
+      case 8557:\r
+        ret = 8573;\r
+        break;\r
+      case 8558:\r
+        ret = 8574;\r
+        break;\r
+      case 8559:\r
+        ret = 8575;\r
+        break;\r
+      case 9398:\r
+        ret = 9424;\r
+        break;\r
+      case 9399:\r
+        ret = 9425;\r
+        break;\r
+      case 9400:\r
+        ret = 9426;\r
+        break;\r
+      case 9401:\r
+        ret = 9427;\r
+        break;\r
+      case 9402:\r
+        ret = 9428;\r
+        break;\r
+      case 9403:\r
+        ret = 9429;\r
+        break;\r
+      case 9404:\r
+        ret = 9430;\r
+        break;\r
+      case 9405:\r
+        ret = 9431;\r
+        break;\r
+      case 9406:\r
+        ret = 9432;\r
+        break;\r
+      case 9407:\r
+        ret = 9433;\r
+        break;\r
+      case 9408:\r
+        ret = 9434;\r
+        break;\r
+      case 9409:\r
+        ret = 9435;\r
+        break;\r
+      case 9410:\r
+        ret = 9436;\r
+        break;\r
+      case 9411:\r
+        ret = 9437;\r
+        break;\r
+      case 9412:\r
+        ret = 9438;\r
+        break;\r
+      case 9413:\r
+        ret = 9439;\r
+        break;\r
+      case 9414:\r
+        ret = 9440;\r
+        break;\r
+      case 9415:\r
+        ret = 9441;\r
+        break;\r
+      case 9416:\r
+        ret = 9442;\r
+        break;\r
+      case 9417:\r
+        ret = 9443;\r
+        break;\r
+      case 9418:\r
+        ret = 9444;\r
+        break;\r
+      case 9419:\r
+        ret = 9445;\r
+        break;\r
+      case 9420:\r
+        ret = 9446;\r
+        break;\r
+      case 9421:\r
+        ret = 9447;\r
+        break;\r
+      case 9422:\r
+        ret = 9448;\r
+        break;\r
+      case 9423:\r
+        ret = 9449;\r
+        break;\r
+      case 65313:\r
+        ret = 65345;\r
+        break;\r
+      case 65314:\r
+        ret = 65346;\r
+        break;\r
+      case 65315:\r
+        ret = 65347;\r
+        break;\r
+      case 65316:\r
+        ret = 65348;\r
+        break;\r
+      case 65317:\r
+        ret = 65349;\r
+        break;\r
+      case 65318:\r
+        ret = 65350;\r
+        break;\r
+      case 65319:\r
+        ret = 65351;\r
+        break;\r
+      case 65320:\r
+        ret = 65352;\r
+        break;\r
+      case 65321:\r
+        ret = 65353;\r
+        break;\r
+      case 65322:\r
+        ret = 65354;\r
+        break;\r
+      case 65323:\r
+        ret = 65355;\r
+        break;\r
+      case 65324:\r
+        ret = 65356;\r
+        break;\r
+      case 65325:\r
+        ret = 65357;\r
+        break;\r
+      case 65326:\r
+        ret = 65358;\r
+        break;\r
+      case 65327:\r
+        ret = 65359;\r
+        break;\r
+      case 65328:\r
+        ret = 65360;\r
+        break;\r
+      case 65329:\r
+        ret = 65361;\r
+        break;\r
+      case 65330:\r
+        ret = 65362;\r
+        break;\r
+      case 65331:\r
+        ret = 65363;\r
+        break;\r
+      case 65332:\r
+        ret = 65364;\r
+        break;\r
+      case 65333:\r
+        ret = 65365;\r
+        break;\r
+      case 65334:\r
+        ret = 65366;\r
+        break;\r
+      case 65335:\r
+        ret = 65367;\r
+        break;\r
+      case 65336:\r
+        ret = 65368;\r
+        break;\r
+      case 65337:\r
+        ret = 65369;\r
+        break;\r
+      case 65338:\r
+        ret = 65370;\r
+        break;\r
+      }\r
+      return (char) ret;\r
+    }\r
+    return Character.toLowerCase(c);\r
+  }\r
+\r
+  /** Convert a String to title case. */\r
+  public static String toTitleCase(String s)\r
+  {\r
+    javajs.util.SB sb = new javajs.util.SB();\r
+    for (int i = 0; i < s.length(); i++)\r
+    {\r
+      sb.appendC(CaseMgr.toTitleCase(s.charAt(i)));\r
+    }\r
+    return sb.toString();\r
+  }\r
+\r
+  /** Convert a String to upper case. */\r
+  public static String toUpperCase(String s)\r
+  {\r
+    javajs.util.SB sb = new javajs.util.SB();\r
+    for (int i = 0; i < s.length(); i++)\r
+    {\r
+      sb.appendC(CaseMgr.toUpperCase(s.charAt(i)));\r
+    }\r
+    return sb.toString();\r
+  }\r
+\r
+  /** Convert a String to lower case. */\r
+  public static String toLowerCase(String s)\r
+  {\r
+    javajs.util.SB sb = new javajs.util.SB();\r
+    for (int i = 0; i < s.length(); i++)\r
+    {\r
+      sb.appendC(CaseMgr.toLowerCase(s.charAt(i)));\r
+    }\r
+    return sb.toString();\r
+  }\r
+\r
+  /** Convert a character to title case. */\r
+  public static char toTitleCase(char c)\r
+  {\r
+    if (java_1_0)\r
+    {\r
+      int ret = (int) toUpperCase(c);\r
+      switch (c)\r
+      {\r
+      case 452:\r
+        ret = 453;\r
+        break;\r
+      case 453:\r
+        ret = 453;\r
+        break;\r
+      case 454:\r
+        ret = 453;\r
+        break;\r
+      case 455:\r
+        ret = 456;\r
+        break;\r
+      case 456:\r
+        ret = 456;\r
+        break;\r
+      case 457:\r
+        ret = 456;\r
+        break;\r
+      case 458:\r
+        ret = 459;\r
+        break;\r
+      case 459:\r
+        ret = 459;\r
+        break;\r
+      case 460:\r
+        ret = 459;\r
+        break;\r
+      case 497:\r
+        ret = 498;\r
+        break;\r
+      case 498:\r
+        ret = 498;\r
+        break;\r
+      case 499:\r
+        ret = 498;\r
+        break;\r
+      }\r
+      return (char) ret;\r
+    }\r
+    return Character.toTitleCase(c);\r
+  }\r
+\r
+  /**\r
+   * Duplicates the regionMatches routine of String -- but makes use of the\r
+   * definitions of upper, lower, and title case in this class when ignoreCase\r
+   * is set.\r
+   */\r
+  public static boolean regionMatches(StringLike s1, boolean ign, int i1,\r
+          StringLike s2, int i2, int i3)\r
+  {\r
+    int itot = i2 + i3;\r
+    if (itot > s2.length() || i1 + i3 > s1.length())\r
+    {\r
+      return false;\r
+    }\r
+    if (!ign)\r
+    {\r
+      for (int i = i2; i < itot; i++)\r
+      {\r
+        if (s2.charAt(i) != s1.charAt(i1++))\r
+        {\r
+          return false;\r
+        }\r
+      }\r
+    }\r
+    else\r
+    {\r
+      for (int i = i2; i < itot; i++)\r
+      {\r
+        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
+        {\r
+          return false;\r
+        }\r
+      }\r
+    }\r
+    return true;\r
+  }\r
+\r
+  /**\r
+   * Duplicates the regionMatches routine of String -- but makes use of the\r
+   * definitions of upper, lower, and title case in this class when ignoreCase\r
+   * is set.\r
+   */\r
+  public static boolean regionMatches(String s1, boolean ign, int i1,\r
+          StringLike s2, int i2, int i3)\r
+  {\r
+    int itot = i2 + i3;\r
+    if (itot > s2.length() || i1 + i3 > s1.length())\r
+    {\r
+      return false;\r
+    }\r
+    if (!ign)\r
+    {\r
+      for (int i = i2; i < itot; i++)\r
+      {\r
+        if (s2.charAt(i) != s1.charAt(i1++))\r
+        {\r
+          return false;\r
+        }\r
+      }\r
+    }\r
+    else\r
+    {\r
+      for (int i = i2; i < itot; i++)\r
+      {\r
+        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
+        {\r
+          return false;\r
+        }\r
+      }\r
+    }\r
+    return true;\r
+  }\r
+\r
+  /**\r
+   * Duplicates the regionMatches routine of String -- but makes use of the\r
+   * definitions of upper, lower, and title case in this class when ignoreCase\r
+   * is set.\r
+   */\r
+  public static boolean regionMatches(StringLike s1, boolean ign, int i1,\r
+          String s2, int i2, int i3)\r
+  {\r
+    int itot = i2 + i3;\r
+    if (itot > s2.length() || i1 + i3 > s1.length())\r
+    {\r
+      return false;\r
+    }\r
+    if (!ign)\r
+    {\r
+      for (int i = i2; i < itot; i++)\r
+      {\r
+        if (s2.charAt(i) != s1.charAt(i1++))\r
+        {\r
+          return false;\r
+        }\r
+      }\r
+    }\r
+    else\r
+    {\r
+      for (int i = i2; i < itot; i++)\r
+      {\r
+        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
+        {\r
+          return false;\r
+        }\r
+      }\r
+    }\r
+    return true;\r
+  }\r
+\r
+  /**\r
+   * Duplicates the regionMatches routine of String -- but makes use of the\r
+   * definitions of upper, lower, and title case in this class when ignoreCase\r
+   * is set.\r
+   */\r
+  public static boolean regionMatches(String s1, boolean ign, int i1,\r
+          String s2, int i2, int i3)\r
+  {\r
+    int itot = i2 + i3;\r
+    if (itot > s2.length() || i1 + i3 > s1.length())\r
+    {\r
+      return false;\r
+    }\r
+    if (!ign)\r
+    {\r
+      for (int i = i2; i < itot; i++)\r
+      {\r
+        if (s2.charAt(i) != s1.charAt(i1++))\r
+        {\r
+          return false;\r
+        }\r
+      }\r
+    }\r
+    else\r
+    {\r
+      for (int i = i2; i < itot; i++)\r
+      {\r
+        if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
+        {\r
+          return false;\r
+        }\r
+      }\r
+    }\r
+    return true;\r
+  }\r
+}\r