update to Jaba_r1 minimal client distribution, and resolve issues JAL-602
[jalview.git] / src / com / stevesoft / pat / CaseMgr.java
1 //
2 // This software is now distributed according to
3 // the Lesser Gnu Public License.  Please see
4 // http://www.gnu.org/copyleft/lesser.txt for
5 // the details.
6 //    -- Happy Computing!
7 //
8 package com.stevesoft.pat;
9
10 /**
11  * Encapsulates the Unicode definitions of Upper, Lower, and Title case as
12  * defined by <a href="http://www.unicode.org"> unicode.org</a>.
13  * <p>
14  * The performance of the methods found in String and Character is better, but
15  * these methods work both in java 1.0 and 1.1. If it is desirable, either to
16  * gain a slight performance increase or to accomodate application specific
17  * modifications to the definitions of upper, lower, and title case then it
18  * should be a straightforward task to substitute your own methods for these.
19  */
20 final public class CaseMgr
21 {
22   final static boolean java_1_0 = false;
23
24   /** Convert a character to upper case . */
25   public static char toUpperCase(char c)
26   {
27     if (java_1_0)
28     {
29       int ret = (int) c;
30       switch (c)
31       {
32       case 97:
33         ret = 65;
34         break;
35       case 98:
36         ret = 66;
37         break;
38       case 99:
39         ret = 67;
40         break;
41       case 100:
42         ret = 68;
43         break;
44       case 101:
45         ret = 69;
46         break;
47       case 102:
48         ret = 70;
49         break;
50       case 103:
51         ret = 71;
52         break;
53       case 104:
54         ret = 72;
55         break;
56       case 105:
57         ret = 73;
58         break;
59       case 106:
60         ret = 74;
61         break;
62       case 107:
63         ret = 75;
64         break;
65       case 108:
66         ret = 76;
67         break;
68       case 109:
69         ret = 77;
70         break;
71       case 110:
72         ret = 78;
73         break;
74       case 111:
75         ret = 79;
76         break;
77       case 112:
78         ret = 80;
79         break;
80       case 113:
81         ret = 81;
82         break;
83       case 114:
84         ret = 82;
85         break;
86       case 115:
87         ret = 83;
88         break;
89       case 116:
90         ret = 84;
91         break;
92       case 117:
93         ret = 85;
94         break;
95       case 118:
96         ret = 86;
97         break;
98       case 119:
99         ret = 87;
100         break;
101       case 120:
102         ret = 88;
103         break;
104       case 121:
105         ret = 89;
106         break;
107       case 122:
108         ret = 90;
109         break;
110       case 224:
111         ret = 192;
112         break;
113       case 225:
114         ret = 193;
115         break;
116       case 226:
117         ret = 194;
118         break;
119       case 227:
120         ret = 195;
121         break;
122       case 228:
123         ret = 196;
124         break;
125       case 229:
126         ret = 197;
127         break;
128       case 230:
129         ret = 198;
130         break;
131       case 231:
132         ret = 199;
133         break;
134       case 232:
135         ret = 200;
136         break;
137       case 233:
138         ret = 201;
139         break;
140       case 234:
141         ret = 202;
142         break;
143       case 235:
144         ret = 203;
145         break;
146       case 236:
147         ret = 204;
148         break;
149       case 237:
150         ret = 205;
151         break;
152       case 238:
153         ret = 206;
154         break;
155       case 239:
156         ret = 207;
157         break;
158       case 240:
159         ret = 208;
160         break;
161       case 241:
162         ret = 209;
163         break;
164       case 242:
165         ret = 210;
166         break;
167       case 243:
168         ret = 211;
169         break;
170       case 244:
171         ret = 212;
172         break;
173       case 245:
174         ret = 213;
175         break;
176       case 246:
177         ret = 214;
178         break;
179       case 248:
180         ret = 216;
181         break;
182       case 249:
183         ret = 217;
184         break;
185       case 250:
186         ret = 218;
187         break;
188       case 251:
189         ret = 219;
190         break;
191       case 252:
192         ret = 220;
193         break;
194       case 253:
195         ret = 221;
196         break;
197       case 254:
198         ret = 222;
199         break;
200       case 255:
201         ret = 376;
202         break;
203       case 257:
204         ret = 256;
205         break;
206       case 259:
207         ret = 258;
208         break;
209       case 261:
210         ret = 260;
211         break;
212       case 263:
213         ret = 262;
214         break;
215       case 265:
216         ret = 264;
217         break;
218       case 267:
219         ret = 266;
220         break;
221       case 269:
222         ret = 268;
223         break;
224       case 271:
225         ret = 270;
226         break;
227       case 273:
228         ret = 272;
229         break;
230       case 275:
231         ret = 274;
232         break;
233       case 277:
234         ret = 276;
235         break;
236       case 279:
237         ret = 278;
238         break;
239       case 281:
240         ret = 280;
241         break;
242       case 283:
243         ret = 282;
244         break;
245       case 285:
246         ret = 284;
247         break;
248       case 287:
249         ret = 286;
250         break;
251       case 289:
252         ret = 288;
253         break;
254       case 291:
255         ret = 290;
256         break;
257       case 293:
258         ret = 292;
259         break;
260       case 295:
261         ret = 294;
262         break;
263       case 297:
264         ret = 296;
265         break;
266       case 299:
267         ret = 298;
268         break;
269       case 301:
270         ret = 300;
271         break;
272       case 303:
273         ret = 302;
274         break;
275       case 305:
276         ret = 73;
277         break;
278       case 307:
279         ret = 306;
280         break;
281       case 309:
282         ret = 308;
283         break;
284       case 311:
285         ret = 310;
286         break;
287       case 314:
288         ret = 313;
289         break;
290       case 316:
291         ret = 315;
292         break;
293       case 318:
294         ret = 317;
295         break;
296       case 320:
297         ret = 319;
298         break;
299       case 322:
300         ret = 321;
301         break;
302       case 324:
303         ret = 323;
304         break;
305       case 326:
306         ret = 325;
307         break;
308       case 328:
309         ret = 327;
310         break;
311       case 331:
312         ret = 330;
313         break;
314       case 333:
315         ret = 332;
316         break;
317       case 335:
318         ret = 334;
319         break;
320       case 337:
321         ret = 336;
322         break;
323       case 339:
324         ret = 338;
325         break;
326       case 341:
327         ret = 340;
328         break;
329       case 343:
330         ret = 342;
331         break;
332       case 345:
333         ret = 344;
334         break;
335       case 347:
336         ret = 346;
337         break;
338       case 349:
339         ret = 348;
340         break;
341       case 351:
342         ret = 350;
343         break;
344       case 353:
345         ret = 352;
346         break;
347       case 355:
348         ret = 354;
349         break;
350       case 357:
351         ret = 356;
352         break;
353       case 359:
354         ret = 358;
355         break;
356       case 361:
357         ret = 360;
358         break;
359       case 363:
360         ret = 362;
361         break;
362       case 365:
363         ret = 364;
364         break;
365       case 367:
366         ret = 366;
367         break;
368       case 369:
369         ret = 368;
370         break;
371       case 371:
372         ret = 370;
373         break;
374       case 373:
375         ret = 372;
376         break;
377       case 375:
378         ret = 374;
379         break;
380       case 378:
381         ret = 377;
382         break;
383       case 380:
384         ret = 379;
385         break;
386       case 382:
387         ret = 381;
388         break;
389       case 383:
390         ret = 83;
391         break;
392       case 387:
393         ret = 386;
394         break;
395       case 389:
396         ret = 388;
397         break;
398       case 392:
399         ret = 391;
400         break;
401       case 396:
402         ret = 395;
403         break;
404       case 402:
405         ret = 401;
406         break;
407       case 409:
408         ret = 408;
409         break;
410       case 417:
411         ret = 416;
412         break;
413       case 419:
414         ret = 418;
415         break;
416       case 421:
417         ret = 420;
418         break;
419       case 424:
420         ret = 423;
421         break;
422       case 429:
423         ret = 428;
424         break;
425       case 432:
426         ret = 431;
427         break;
428       case 436:
429         ret = 435;
430         break;
431       case 438:
432         ret = 437;
433         break;
434       case 441:
435         ret = 440;
436         break;
437       case 445:
438         ret = 444;
439         break;
440       case 453:
441         ret = 452;
442         break;
443       case 454:
444         ret = 452;
445         break;
446       case 456:
447         ret = 455;
448         break;
449       case 457:
450         ret = 455;
451         break;
452       case 459:
453         ret = 458;
454         break;
455       case 460:
456         ret = 458;
457         break;
458       case 462:
459         ret = 461;
460         break;
461       case 464:
462         ret = 463;
463         break;
464       case 466:
465         ret = 465;
466         break;
467       case 468:
468         ret = 467;
469         break;
470       case 470:
471         ret = 469;
472         break;
473       case 472:
474         ret = 471;
475         break;
476       case 474:
477         ret = 473;
478         break;
479       case 476:
480         ret = 475;
481         break;
482       case 479:
483         ret = 478;
484         break;
485       case 481:
486         ret = 480;
487         break;
488       case 483:
489         ret = 482;
490         break;
491       case 485:
492         ret = 484;
493         break;
494       case 487:
495         ret = 486;
496         break;
497       case 489:
498         ret = 488;
499         break;
500       case 491:
501         ret = 490;
502         break;
503       case 493:
504         ret = 492;
505         break;
506       case 495:
507         ret = 494;
508         break;
509       case 498:
510         ret = 497;
511         break;
512       case 499:
513         ret = 497;
514         break;
515       case 501:
516         ret = 500;
517         break;
518       case 507:
519         ret = 506;
520         break;
521       case 509:
522         ret = 508;
523         break;
524       case 511:
525         ret = 510;
526         break;
527       case 513:
528         ret = 512;
529         break;
530       case 515:
531         ret = 514;
532         break;
533       case 517:
534         ret = 516;
535         break;
536       case 519:
537         ret = 518;
538         break;
539       case 521:
540         ret = 520;
541         break;
542       case 523:
543         ret = 522;
544         break;
545       case 525:
546         ret = 524;
547         break;
548       case 527:
549         ret = 526;
550         break;
551       case 529:
552         ret = 528;
553         break;
554       case 531:
555         ret = 530;
556         break;
557       case 533:
558         ret = 532;
559         break;
560       case 535:
561         ret = 534;
562         break;
563       case 595:
564         ret = 385;
565         break;
566       case 596:
567         ret = 390;
568         break;
569       case 598:
570         ret = 393;
571         break;
572       case 599:
573         ret = 394;
574         break;
575       case 600:
576         ret = 398;
577         break;
578       case 601:
579         ret = 399;
580         break;
581       case 603:
582         ret = 400;
583         break;
584       case 608:
585         ret = 403;
586         break;
587       case 611:
588         ret = 404;
589         break;
590       case 616:
591         ret = 407;
592         break;
593       case 617:
594         ret = 406;
595         break;
596       case 623:
597         ret = 412;
598         break;
599       case 626:
600         ret = 413;
601         break;
602       case 643:
603         ret = 425;
604         break;
605       case 648:
606         ret = 430;
607         break;
608       case 650:
609         ret = 433;
610         break;
611       case 651:
612         ret = 434;
613         break;
614       case 658:
615         ret = 439;
616         break;
617       case 940:
618         ret = 902;
619         break;
620       case 941:
621         ret = 904;
622         break;
623       case 942:
624         ret = 905;
625         break;
626       case 943:
627         ret = 906;
628         break;
629       case 945:
630         ret = 913;
631         break;
632       case 946:
633         ret = 914;
634         break;
635       case 947:
636         ret = 915;
637         break;
638       case 948:
639         ret = 916;
640         break;
641       case 949:
642         ret = 917;
643         break;
644       case 950:
645         ret = 918;
646         break;
647       case 951:
648         ret = 919;
649         break;
650       case 952:
651         ret = 920;
652         break;
653       case 953:
654         ret = 921;
655         break;
656       case 954:
657         ret = 922;
658         break;
659       case 955:
660         ret = 923;
661         break;
662       case 956:
663         ret = 924;
664         break;
665       case 957:
666         ret = 925;
667         break;
668       case 958:
669         ret = 926;
670         break;
671       case 959:
672         ret = 927;
673         break;
674       case 960:
675         ret = 928;
676         break;
677       case 961:
678         ret = 929;
679         break;
680       case 963:
681         ret = 931;
682         break;
683       case 964:
684         ret = 932;
685         break;
686       case 965:
687         ret = 933;
688         break;
689       case 966:
690         ret = 934;
691         break;
692       case 967:
693         ret = 935;
694         break;
695       case 968:
696         ret = 936;
697         break;
698       case 969:
699         ret = 937;
700         break;
701       case 970:
702         ret = 938;
703         break;
704       case 971:
705         ret = 939;
706         break;
707       case 972:
708         ret = 908;
709         break;
710       case 973:
711         ret = 910;
712         break;
713       case 974:
714         ret = 911;
715         break;
716       case 976:
717         ret = 914;
718         break;
719       case 977:
720         ret = 920;
721         break;
722       case 981:
723         ret = 934;
724         break;
725       case 982:
726         ret = 928;
727         break;
728       case 995:
729         ret = 994;
730         break;
731       case 997:
732         ret = 996;
733         break;
734       case 999:
735         ret = 998;
736         break;
737       case 1001:
738         ret = 1000;
739         break;
740       case 1003:
741         ret = 1002;
742         break;
743       case 1005:
744         ret = 1004;
745         break;
746       case 1007:
747         ret = 1006;
748         break;
749       case 1008:
750         ret = 922;
751         break;
752       case 1009:
753         ret = 929;
754         break;
755       case 1072:
756         ret = 1040;
757         break;
758       case 1073:
759         ret = 1041;
760         break;
761       case 1074:
762         ret = 1042;
763         break;
764       case 1075:
765         ret = 1043;
766         break;
767       case 1076:
768         ret = 1044;
769         break;
770       case 1077:
771         ret = 1045;
772         break;
773       case 1078:
774         ret = 1046;
775         break;
776       case 1079:
777         ret = 1047;
778         break;
779       case 1080:
780         ret = 1048;
781         break;
782       case 1081:
783         ret = 1049;
784         break;
785       case 1082:
786         ret = 1050;
787         break;
788       case 1083:
789         ret = 1051;
790         break;
791       case 1084:
792         ret = 1052;
793         break;
794       case 1085:
795         ret = 1053;
796         break;
797       case 1086:
798         ret = 1054;
799         break;
800       case 1087:
801         ret = 1055;
802         break;
803       case 1088:
804         ret = 1056;
805         break;
806       case 1089:
807         ret = 1057;
808         break;
809       case 1090:
810         ret = 1058;
811         break;
812       case 1091:
813         ret = 1059;
814         break;
815       case 1092:
816         ret = 1060;
817         break;
818       case 1093:
819         ret = 1061;
820         break;
821       case 1094:
822         ret = 1062;
823         break;
824       case 1095:
825         ret = 1063;
826         break;
827       case 1096:
828         ret = 1064;
829         break;
830       case 1097:
831         ret = 1065;
832         break;
833       case 1098:
834         ret = 1066;
835         break;
836       case 1099:
837         ret = 1067;
838         break;
839       case 1100:
840         ret = 1068;
841         break;
842       case 1101:
843         ret = 1069;
844         break;
845       case 1102:
846         ret = 1070;
847         break;
848       case 1103:
849         ret = 1071;
850         break;
851       case 1105:
852         ret = 1025;
853         break;
854       case 1106:
855         ret = 1026;
856         break;
857       case 1107:
858         ret = 1027;
859         break;
860       case 1108:
861         ret = 1028;
862         break;
863       case 1109:
864         ret = 1029;
865         break;
866       case 1110:
867         ret = 1030;
868         break;
869       case 1111:
870         ret = 1031;
871         break;
872       case 1112:
873         ret = 1032;
874         break;
875       case 1113:
876         ret = 1033;
877         break;
878       case 1114:
879         ret = 1034;
880         break;
881       case 1115:
882         ret = 1035;
883         break;
884       case 1116:
885         ret = 1036;
886         break;
887       case 1118:
888         ret = 1038;
889         break;
890       case 1119:
891         ret = 1039;
892         break;
893       case 1121:
894         ret = 1120;
895         break;
896       case 1123:
897         ret = 1122;
898         break;
899       case 1125:
900         ret = 1124;
901         break;
902       case 1127:
903         ret = 1126;
904         break;
905       case 1129:
906         ret = 1128;
907         break;
908       case 1131:
909         ret = 1130;
910         break;
911       case 1133:
912         ret = 1132;
913         break;
914       case 1135:
915         ret = 1134;
916         break;
917       case 1137:
918         ret = 1136;
919         break;
920       case 1139:
921         ret = 1138;
922         break;
923       case 1141:
924         ret = 1140;
925         break;
926       case 1143:
927         ret = 1142;
928         break;
929       case 1145:
930         ret = 1144;
931         break;
932       case 1147:
933         ret = 1146;
934         break;
935       case 1149:
936         ret = 1148;
937         break;
938       case 1151:
939         ret = 1150;
940         break;
941       case 1153:
942         ret = 1152;
943         break;
944       case 1169:
945         ret = 1168;
946         break;
947       case 1171:
948         ret = 1170;
949         break;
950       case 1173:
951         ret = 1172;
952         break;
953       case 1175:
954         ret = 1174;
955         break;
956       case 1177:
957         ret = 1176;
958         break;
959       case 1179:
960         ret = 1178;
961         break;
962       case 1181:
963         ret = 1180;
964         break;
965       case 1183:
966         ret = 1182;
967         break;
968       case 1185:
969         ret = 1184;
970         break;
971       case 1187:
972         ret = 1186;
973         break;
974       case 1189:
975         ret = 1188;
976         break;
977       case 1191:
978         ret = 1190;
979         break;
980       case 1193:
981         ret = 1192;
982         break;
983       case 1195:
984         ret = 1194;
985         break;
986       case 1197:
987         ret = 1196;
988         break;
989       case 1199:
990         ret = 1198;
991         break;
992       case 1201:
993         ret = 1200;
994         break;
995       case 1203:
996         ret = 1202;
997         break;
998       case 1205:
999         ret = 1204;
1000         break;
1001       case 1207:
1002         ret = 1206;
1003         break;
1004       case 1209:
1005         ret = 1208;
1006         break;
1007       case 1211:
1008         ret = 1210;
1009         break;
1010       case 1213:
1011         ret = 1212;
1012         break;
1013       case 1215:
1014         ret = 1214;
1015         break;
1016       case 1218:
1017         ret = 1217;
1018         break;
1019       case 1220:
1020         ret = 1219;
1021         break;
1022       case 1224:
1023         ret = 1223;
1024         break;
1025       case 1228:
1026         ret = 1227;
1027         break;
1028       case 1233:
1029         ret = 1232;
1030         break;
1031       case 1235:
1032         ret = 1234;
1033         break;
1034       case 1237:
1035         ret = 1236;
1036         break;
1037       case 1239:
1038         ret = 1238;
1039         break;
1040       case 1241:
1041         ret = 1240;
1042         break;
1043       case 1243:
1044         ret = 1242;
1045         break;
1046       case 1245:
1047         ret = 1244;
1048         break;
1049       case 1247:
1050         ret = 1246;
1051         break;
1052       case 1249:
1053         ret = 1248;
1054         break;
1055       case 1251:
1056         ret = 1250;
1057         break;
1058       case 1253:
1059         ret = 1252;
1060         break;
1061       case 1255:
1062         ret = 1254;
1063         break;
1064       case 1257:
1065         ret = 1256;
1066         break;
1067       case 1259:
1068         ret = 1258;
1069         break;
1070       case 1263:
1071         ret = 1262;
1072         break;
1073       case 1265:
1074         ret = 1264;
1075         break;
1076       case 1267:
1077         ret = 1266;
1078         break;
1079       case 1269:
1080         ret = 1268;
1081         break;
1082       case 1273:
1083         ret = 1272;
1084         break;
1085       case 1377:
1086         ret = 1329;
1087         break;
1088       case 1378:
1089         ret = 1330;
1090         break;
1091       case 1379:
1092         ret = 1331;
1093         break;
1094       case 1380:
1095         ret = 1332;
1096         break;
1097       case 1381:
1098         ret = 1333;
1099         break;
1100       case 1382:
1101         ret = 1334;
1102         break;
1103       case 1383:
1104         ret = 1335;
1105         break;
1106       case 1384:
1107         ret = 1336;
1108         break;
1109       case 1385:
1110         ret = 1337;
1111         break;
1112       case 1386:
1113         ret = 1338;
1114         break;
1115       case 1387:
1116         ret = 1339;
1117         break;
1118       case 1388:
1119         ret = 1340;
1120         break;
1121       case 1389:
1122         ret = 1341;
1123         break;
1124       case 1390:
1125         ret = 1342;
1126         break;
1127       case 1391:
1128         ret = 1343;
1129         break;
1130       case 1392:
1131         ret = 1344;
1132         break;
1133       case 1393:
1134         ret = 1345;
1135         break;
1136       case 1394:
1137         ret = 1346;
1138         break;
1139       case 1395:
1140         ret = 1347;
1141         break;
1142       case 1396:
1143         ret = 1348;
1144         break;
1145       case 1397:
1146         ret = 1349;
1147         break;
1148       case 1398:
1149         ret = 1350;
1150         break;
1151       case 1399:
1152         ret = 1351;
1153         break;
1154       case 1400:
1155         ret = 1352;
1156         break;
1157       case 1401:
1158         ret = 1353;
1159         break;
1160       case 1402:
1161         ret = 1354;
1162         break;
1163       case 1403:
1164         ret = 1355;
1165         break;
1166       case 1404:
1167         ret = 1356;
1168         break;
1169       case 1405:
1170         ret = 1357;
1171         break;
1172       case 1406:
1173         ret = 1358;
1174         break;
1175       case 1407:
1176         ret = 1359;
1177         break;
1178       case 1408:
1179         ret = 1360;
1180         break;
1181       case 1409:
1182         ret = 1361;
1183         break;
1184       case 1410:
1185         ret = 1362;
1186         break;
1187       case 1411:
1188         ret = 1363;
1189         break;
1190       case 1412:
1191         ret = 1364;
1192         break;
1193       case 1413:
1194         ret = 1365;
1195         break;
1196       case 1414:
1197         ret = 1366;
1198         break;
1199       case 7681:
1200         ret = 7680;
1201         break;
1202       case 7683:
1203         ret = 7682;
1204         break;
1205       case 7685:
1206         ret = 7684;
1207         break;
1208       case 7687:
1209         ret = 7686;
1210         break;
1211       case 7689:
1212         ret = 7688;
1213         break;
1214       case 7691:
1215         ret = 7690;
1216         break;
1217       case 7693:
1218         ret = 7692;
1219         break;
1220       case 7695:
1221         ret = 7694;
1222         break;
1223       case 7697:
1224         ret = 7696;
1225         break;
1226       case 7699:
1227         ret = 7698;
1228         break;
1229       case 7701:
1230         ret = 7700;
1231         break;
1232       case 7703:
1233         ret = 7702;
1234         break;
1235       case 7705:
1236         ret = 7704;
1237         break;
1238       case 7707:
1239         ret = 7706;
1240         break;
1241       case 7709:
1242         ret = 7708;
1243         break;
1244       case 7711:
1245         ret = 7710;
1246         break;
1247       case 7713:
1248         ret = 7712;
1249         break;
1250       case 7715:
1251         ret = 7714;
1252         break;
1253       case 7717:
1254         ret = 7716;
1255         break;
1256       case 7719:
1257         ret = 7718;
1258         break;
1259       case 7721:
1260         ret = 7720;
1261         break;
1262       case 7723:
1263         ret = 7722;
1264         break;
1265       case 7725:
1266         ret = 7724;
1267         break;
1268       case 7727:
1269         ret = 7726;
1270         break;
1271       case 7729:
1272         ret = 7728;
1273         break;
1274       case 7731:
1275         ret = 7730;
1276         break;
1277       case 7733:
1278         ret = 7732;
1279         break;
1280       case 7735:
1281         ret = 7734;
1282         break;
1283       case 7737:
1284         ret = 7736;
1285         break;
1286       case 7739:
1287         ret = 7738;
1288         break;
1289       case 7741:
1290         ret = 7740;
1291         break;
1292       case 7743:
1293         ret = 7742;
1294         break;
1295       case 7745:
1296         ret = 7744;
1297         break;
1298       case 7747:
1299         ret = 7746;
1300         break;
1301       case 7749:
1302         ret = 7748;
1303         break;
1304       case 7751:
1305         ret = 7750;
1306         break;
1307       case 7753:
1308         ret = 7752;
1309         break;
1310       case 7755:
1311         ret = 7754;
1312         break;
1313       case 7757:
1314         ret = 7756;
1315         break;
1316       case 7759:
1317         ret = 7758;
1318         break;
1319       case 7761:
1320         ret = 7760;
1321         break;
1322       case 7763:
1323         ret = 7762;
1324         break;
1325       case 7765:
1326         ret = 7764;
1327         break;
1328       case 7767:
1329         ret = 7766;
1330         break;
1331       case 7769:
1332         ret = 7768;
1333         break;
1334       case 7771:
1335         ret = 7770;
1336         break;
1337       case 7773:
1338         ret = 7772;
1339         break;
1340       case 7775:
1341         ret = 7774;
1342         break;
1343       case 7777:
1344         ret = 7776;
1345         break;
1346       case 7779:
1347         ret = 7778;
1348         break;
1349       case 7781:
1350         ret = 7780;
1351         break;
1352       case 7783:
1353         ret = 7782;
1354         break;
1355       case 7785:
1356         ret = 7784;
1357         break;
1358       case 7787:
1359         ret = 7786;
1360         break;
1361       case 7789:
1362         ret = 7788;
1363         break;
1364       case 7791:
1365         ret = 7790;
1366         break;
1367       case 7793:
1368         ret = 7792;
1369         break;
1370       case 7795:
1371         ret = 7794;
1372         break;
1373       case 7797:
1374         ret = 7796;
1375         break;
1376       case 7799:
1377         ret = 7798;
1378         break;
1379       case 7801:
1380         ret = 7800;
1381         break;
1382       case 7803:
1383         ret = 7802;
1384         break;
1385       case 7805:
1386         ret = 7804;
1387         break;
1388       case 7807:
1389         ret = 7806;
1390         break;
1391       case 7809:
1392         ret = 7808;
1393         break;
1394       case 7811:
1395         ret = 7810;
1396         break;
1397       case 7813:
1398         ret = 7812;
1399         break;
1400       case 7815:
1401         ret = 7814;
1402         break;
1403       case 7817:
1404         ret = 7816;
1405         break;
1406       case 7819:
1407         ret = 7818;
1408         break;
1409       case 7821:
1410         ret = 7820;
1411         break;
1412       case 7823:
1413         ret = 7822;
1414         break;
1415       case 7825:
1416         ret = 7824;
1417         break;
1418       case 7827:
1419         ret = 7826;
1420         break;
1421       case 7829:
1422         ret = 7828;
1423         break;
1424       case 7841:
1425         ret = 7840;
1426         break;
1427       case 7843:
1428         ret = 7842;
1429         break;
1430       case 7845:
1431         ret = 7844;
1432         break;
1433       case 7847:
1434         ret = 7846;
1435         break;
1436       case 7849:
1437         ret = 7848;
1438         break;
1439       case 7851:
1440         ret = 7850;
1441         break;
1442       case 7853:
1443         ret = 7852;
1444         break;
1445       case 7855:
1446         ret = 7854;
1447         break;
1448       case 7857:
1449         ret = 7856;
1450         break;
1451       case 7859:
1452         ret = 7858;
1453         break;
1454       case 7861:
1455         ret = 7860;
1456         break;
1457       case 7863:
1458         ret = 7862;
1459         break;
1460       case 7865:
1461         ret = 7864;
1462         break;
1463       case 7867:
1464         ret = 7866;
1465         break;
1466       case 7869:
1467         ret = 7868;
1468         break;
1469       case 7871:
1470         ret = 7870;
1471         break;
1472       case 7873:
1473         ret = 7872;
1474         break;
1475       case 7875:
1476         ret = 7874;
1477         break;
1478       case 7877:
1479         ret = 7876;
1480         break;
1481       case 7879:
1482         ret = 7878;
1483         break;
1484       case 7881:
1485         ret = 7880;
1486         break;
1487       case 7883:
1488         ret = 7882;
1489         break;
1490       case 7885:
1491         ret = 7884;
1492         break;
1493       case 7887:
1494         ret = 7886;
1495         break;
1496       case 7889:
1497         ret = 7888;
1498         break;
1499       case 7891:
1500         ret = 7890;
1501         break;
1502       case 7893:
1503         ret = 7892;
1504         break;
1505       case 7895:
1506         ret = 7894;
1507         break;
1508       case 7897:
1509         ret = 7896;
1510         break;
1511       case 7899:
1512         ret = 7898;
1513         break;
1514       case 7901:
1515         ret = 7900;
1516         break;
1517       case 7903:
1518         ret = 7902;
1519         break;
1520       case 7905:
1521         ret = 7904;
1522         break;
1523       case 7907:
1524         ret = 7906;
1525         break;
1526       case 7909:
1527         ret = 7908;
1528         break;
1529       case 7911:
1530         ret = 7910;
1531         break;
1532       case 7913:
1533         ret = 7912;
1534         break;
1535       case 7915:
1536         ret = 7914;
1537         break;
1538       case 7917:
1539         ret = 7916;
1540         break;
1541       case 7919:
1542         ret = 7918;
1543         break;
1544       case 7921:
1545         ret = 7920;
1546         break;
1547       case 7923:
1548         ret = 7922;
1549         break;
1550       case 7925:
1551         ret = 7924;
1552         break;
1553       case 7927:
1554         ret = 7926;
1555         break;
1556       case 7929:
1557         ret = 7928;
1558         break;
1559       case 7936:
1560         ret = 7944;
1561         break;
1562       case 7937:
1563         ret = 7945;
1564         break;
1565       case 7938:
1566         ret = 7946;
1567         break;
1568       case 7939:
1569         ret = 7947;
1570         break;
1571       case 7940:
1572         ret = 7948;
1573         break;
1574       case 7941:
1575         ret = 7949;
1576         break;
1577       case 7942:
1578         ret = 7950;
1579         break;
1580       case 7943:
1581         ret = 7951;
1582         break;
1583       case 7952:
1584         ret = 7960;
1585         break;
1586       case 7953:
1587         ret = 7961;
1588         break;
1589       case 7954:
1590         ret = 7962;
1591         break;
1592       case 7955:
1593         ret = 7963;
1594         break;
1595       case 7956:
1596         ret = 7964;
1597         break;
1598       case 7957:
1599         ret = 7965;
1600         break;
1601       case 7968:
1602         ret = 7976;
1603         break;
1604       case 7969:
1605         ret = 7977;
1606         break;
1607       case 7970:
1608         ret = 7978;
1609         break;
1610       case 7971:
1611         ret = 7979;
1612         break;
1613       case 7972:
1614         ret = 7980;
1615         break;
1616       case 7973:
1617         ret = 7981;
1618         break;
1619       case 7974:
1620         ret = 7982;
1621         break;
1622       case 7975:
1623         ret = 7983;
1624         break;
1625       case 7984:
1626         ret = 7992;
1627         break;
1628       case 7985:
1629         ret = 7993;
1630         break;
1631       case 7986:
1632         ret = 7994;
1633         break;
1634       case 7987:
1635         ret = 7995;
1636         break;
1637       case 7988:
1638         ret = 7996;
1639         break;
1640       case 7989:
1641         ret = 7997;
1642         break;
1643       case 7990:
1644         ret = 7998;
1645         break;
1646       case 7991:
1647         ret = 7999;
1648         break;
1649       case 8000:
1650         ret = 8008;
1651         break;
1652       case 8001:
1653         ret = 8009;
1654         break;
1655       case 8002:
1656         ret = 8010;
1657         break;
1658       case 8003:
1659         ret = 8011;
1660         break;
1661       case 8004:
1662         ret = 8012;
1663         break;
1664       case 8005:
1665         ret = 8013;
1666         break;
1667       case 8017:
1668         ret = 8025;
1669         break;
1670       case 8019:
1671         ret = 8027;
1672         break;
1673       case 8021:
1674         ret = 8029;
1675         break;
1676       case 8023:
1677         ret = 8031;
1678         break;
1679       case 8032:
1680         ret = 8040;
1681         break;
1682       case 8033:
1683         ret = 8041;
1684         break;
1685       case 8034:
1686         ret = 8042;
1687         break;
1688       case 8035:
1689         ret = 8043;
1690         break;
1691       case 8036:
1692         ret = 8044;
1693         break;
1694       case 8037:
1695         ret = 8045;
1696         break;
1697       case 8038:
1698         ret = 8046;
1699         break;
1700       case 8039:
1701         ret = 8047;
1702         break;
1703       case 8048:
1704         ret = 8122;
1705         break;
1706       case 8049:
1707         ret = 8123;
1708         break;
1709       case 8050:
1710         ret = 8136;
1711         break;
1712       case 8051:
1713         ret = 8137;
1714         break;
1715       case 8052:
1716         ret = 8138;
1717         break;
1718       case 8053:
1719         ret = 8139;
1720         break;
1721       case 8054:
1722         ret = 8154;
1723         break;
1724       case 8055:
1725         ret = 8155;
1726         break;
1727       case 8056:
1728         ret = 8184;
1729         break;
1730       case 8057:
1731         ret = 8185;
1732         break;
1733       case 8058:
1734         ret = 8170;
1735         break;
1736       case 8059:
1737         ret = 8171;
1738         break;
1739       case 8060:
1740         ret = 8186;
1741         break;
1742       case 8061:
1743         ret = 8187;
1744         break;
1745       case 8064:
1746         ret = 8072;
1747         break;
1748       case 8065:
1749         ret = 8073;
1750         break;
1751       case 8066:
1752         ret = 8074;
1753         break;
1754       case 8067:
1755         ret = 8075;
1756         break;
1757       case 8068:
1758         ret = 8076;
1759         break;
1760       case 8069:
1761         ret = 8077;
1762         break;
1763       case 8070:
1764         ret = 8078;
1765         break;
1766       case 8071:
1767         ret = 8079;
1768         break;
1769       case 8080:
1770         ret = 8088;
1771         break;
1772       case 8081:
1773         ret = 8089;
1774         break;
1775       case 8082:
1776         ret = 8090;
1777         break;
1778       case 8083:
1779         ret = 8091;
1780         break;
1781       case 8084:
1782         ret = 8092;
1783         break;
1784       case 8085:
1785         ret = 8093;
1786         break;
1787       case 8086:
1788         ret = 8094;
1789         break;
1790       case 8087:
1791         ret = 8095;
1792         break;
1793       case 8096:
1794         ret = 8104;
1795         break;
1796       case 8097:
1797         ret = 8105;
1798         break;
1799       case 8098:
1800         ret = 8106;
1801         break;
1802       case 8099:
1803         ret = 8107;
1804         break;
1805       case 8100:
1806         ret = 8108;
1807         break;
1808       case 8101:
1809         ret = 8109;
1810         break;
1811       case 8102:
1812         ret = 8110;
1813         break;
1814       case 8103:
1815         ret = 8111;
1816         break;
1817       case 8112:
1818         ret = 8120;
1819         break;
1820       case 8113:
1821         ret = 8121;
1822         break;
1823       case 8115:
1824         ret = 8124;
1825         break;
1826       case 8131:
1827         ret = 8140;
1828         break;
1829       case 8144:
1830         ret = 8152;
1831         break;
1832       case 8145:
1833         ret = 8153;
1834         break;
1835       case 8160:
1836         ret = 8168;
1837         break;
1838       case 8161:
1839         ret = 8169;
1840         break;
1841       case 8165:
1842         ret = 8172;
1843         break;
1844       case 8179:
1845         ret = 8188;
1846         break;
1847       case 8560:
1848         ret = 8544;
1849         break;
1850       case 8561:
1851         ret = 8545;
1852         break;
1853       case 8562:
1854         ret = 8546;
1855         break;
1856       case 8563:
1857         ret = 8547;
1858         break;
1859       case 8564:
1860         ret = 8548;
1861         break;
1862       case 8565:
1863         ret = 8549;
1864         break;
1865       case 8566:
1866         ret = 8550;
1867         break;
1868       case 8567:
1869         ret = 8551;
1870         break;
1871       case 8568:
1872         ret = 8552;
1873         break;
1874       case 8569:
1875         ret = 8553;
1876         break;
1877       case 8570:
1878         ret = 8554;
1879         break;
1880       case 8571:
1881         ret = 8555;
1882         break;
1883       case 8572:
1884         ret = 8556;
1885         break;
1886       case 8573:
1887         ret = 8557;
1888         break;
1889       case 8574:
1890         ret = 8558;
1891         break;
1892       case 8575:
1893         ret = 8559;
1894         break;
1895       case 9424:
1896         ret = 9398;
1897         break;
1898       case 9425:
1899         ret = 9399;
1900         break;
1901       case 9426:
1902         ret = 9400;
1903         break;
1904       case 9427:
1905         ret = 9401;
1906         break;
1907       case 9428:
1908         ret = 9402;
1909         break;
1910       case 9429:
1911         ret = 9403;
1912         break;
1913       case 9430:
1914         ret = 9404;
1915         break;
1916       case 9431:
1917         ret = 9405;
1918         break;
1919       case 9432:
1920         ret = 9406;
1921         break;
1922       case 9433:
1923         ret = 9407;
1924         break;
1925       case 9434:
1926         ret = 9408;
1927         break;
1928       case 9435:
1929         ret = 9409;
1930         break;
1931       case 9436:
1932         ret = 9410;
1933         break;
1934       case 9437:
1935         ret = 9411;
1936         break;
1937       case 9438:
1938         ret = 9412;
1939         break;
1940       case 9439:
1941         ret = 9413;
1942         break;
1943       case 9440:
1944         ret = 9414;
1945         break;
1946       case 9441:
1947         ret = 9415;
1948         break;
1949       case 9442:
1950         ret = 9416;
1951         break;
1952       case 9443:
1953         ret = 9417;
1954         break;
1955       case 9444:
1956         ret = 9418;
1957         break;
1958       case 9445:
1959         ret = 9419;
1960         break;
1961       case 9446:
1962         ret = 9420;
1963         break;
1964       case 9447:
1965         ret = 9421;
1966         break;
1967       case 9448:
1968         ret = 9422;
1969         break;
1970       case 9449:
1971         ret = 9423;
1972         break;
1973       case 65345:
1974         ret = 65313;
1975         break;
1976       case 65346:
1977         ret = 65314;
1978         break;
1979       case 65347:
1980         ret = 65315;
1981         break;
1982       case 65348:
1983         ret = 65316;
1984         break;
1985       case 65349:
1986         ret = 65317;
1987         break;
1988       case 65350:
1989         ret = 65318;
1990         break;
1991       case 65351:
1992         ret = 65319;
1993         break;
1994       case 65352:
1995         ret = 65320;
1996         break;
1997       case 65353:
1998         ret = 65321;
1999         break;
2000       case 65354:
2001         ret = 65322;
2002         break;
2003       case 65355:
2004         ret = 65323;
2005         break;
2006       case 65356:
2007         ret = 65324;
2008         break;
2009       case 65357:
2010         ret = 65325;
2011         break;
2012       case 65358:
2013         ret = 65326;
2014         break;
2015       case 65359:
2016         ret = 65327;
2017         break;
2018       case 65360:
2019         ret = 65328;
2020         break;
2021       case 65361:
2022         ret = 65329;
2023         break;
2024       case 65362:
2025         ret = 65330;
2026         break;
2027       case 65363:
2028         ret = 65331;
2029         break;
2030       case 65364:
2031         ret = 65332;
2032         break;
2033       case 65365:
2034         ret = 65333;
2035         break;
2036       case 65366:
2037         ret = 65334;
2038         break;
2039       case 65367:
2040         ret = 65335;
2041         break;
2042       case 65368:
2043         ret = 65336;
2044         break;
2045       case 65369:
2046         ret = 65337;
2047         break;
2048       case 65370:
2049         ret = 65338;
2050         break;
2051       }
2052       return (char) ret;
2053     }
2054     return Character.toUpperCase(c);
2055   }
2056
2057   /** Convert a character to lower case. */
2058   public static char toLowerCase(char c)
2059   {
2060     if (java_1_0)
2061     {
2062       int ret = (int) c;
2063       switch (c)
2064       {
2065       case 65:
2066         ret = 97;
2067         break;
2068       case 66:
2069         ret = 98;
2070         break;
2071       case 67:
2072         ret = 99;
2073         break;
2074       case 68:
2075         ret = 100;
2076         break;
2077       case 69:
2078         ret = 101;
2079         break;
2080       case 70:
2081         ret = 102;
2082         break;
2083       case 71:
2084         ret = 103;
2085         break;
2086       case 72:
2087         ret = 104;
2088         break;
2089       case 73:
2090         ret = 105;
2091         break;
2092       case 74:
2093         ret = 106;
2094         break;
2095       case 75:
2096         ret = 107;
2097         break;
2098       case 76:
2099         ret = 108;
2100         break;
2101       case 77:
2102         ret = 109;
2103         break;
2104       case 78:
2105         ret = 110;
2106         break;
2107       case 79:
2108         ret = 111;
2109         break;
2110       case 80:
2111         ret = 112;
2112         break;
2113       case 81:
2114         ret = 113;
2115         break;
2116       case 82:
2117         ret = 114;
2118         break;
2119       case 83:
2120         ret = 115;
2121         break;
2122       case 84:
2123         ret = 116;
2124         break;
2125       case 85:
2126         ret = 117;
2127         break;
2128       case 86:
2129         ret = 118;
2130         break;
2131       case 87:
2132         ret = 119;
2133         break;
2134       case 88:
2135         ret = 120;
2136         break;
2137       case 89:
2138         ret = 121;
2139         break;
2140       case 90:
2141         ret = 122;
2142         break;
2143       case 192:
2144         ret = 224;
2145         break;
2146       case 193:
2147         ret = 225;
2148         break;
2149       case 194:
2150         ret = 226;
2151         break;
2152       case 195:
2153         ret = 227;
2154         break;
2155       case 196:
2156         ret = 228;
2157         break;
2158       case 197:
2159         ret = 229;
2160         break;
2161       case 198:
2162         ret = 230;
2163         break;
2164       case 199:
2165         ret = 231;
2166         break;
2167       case 200:
2168         ret = 232;
2169         break;
2170       case 201:
2171         ret = 233;
2172         break;
2173       case 202:
2174         ret = 234;
2175         break;
2176       case 203:
2177         ret = 235;
2178         break;
2179       case 204:
2180         ret = 236;
2181         break;
2182       case 205:
2183         ret = 237;
2184         break;
2185       case 206:
2186         ret = 238;
2187         break;
2188       case 207:
2189         ret = 239;
2190         break;
2191       case 208:
2192         ret = 240;
2193         break;
2194       case 209:
2195         ret = 241;
2196         break;
2197       case 210:
2198         ret = 242;
2199         break;
2200       case 211:
2201         ret = 243;
2202         break;
2203       case 212:
2204         ret = 244;
2205         break;
2206       case 213:
2207         ret = 245;
2208         break;
2209       case 214:
2210         ret = 246;
2211         break;
2212       case 216:
2213         ret = 248;
2214         break;
2215       case 217:
2216         ret = 249;
2217         break;
2218       case 218:
2219         ret = 250;
2220         break;
2221       case 219:
2222         ret = 251;
2223         break;
2224       case 220:
2225         ret = 252;
2226         break;
2227       case 221:
2228         ret = 253;
2229         break;
2230       case 222:
2231         ret = 254;
2232         break;
2233       case 256:
2234         ret = 257;
2235         break;
2236       case 258:
2237         ret = 259;
2238         break;
2239       case 260:
2240         ret = 261;
2241         break;
2242       case 262:
2243         ret = 263;
2244         break;
2245       case 264:
2246         ret = 265;
2247         break;
2248       case 266:
2249         ret = 267;
2250         break;
2251       case 268:
2252         ret = 269;
2253         break;
2254       case 270:
2255         ret = 271;
2256         break;
2257       case 272:
2258         ret = 273;
2259         break;
2260       case 274:
2261         ret = 275;
2262         break;
2263       case 276:
2264         ret = 277;
2265         break;
2266       case 278:
2267         ret = 279;
2268         break;
2269       case 280:
2270         ret = 281;
2271         break;
2272       case 282:
2273         ret = 283;
2274         break;
2275       case 284:
2276         ret = 285;
2277         break;
2278       case 286:
2279         ret = 287;
2280         break;
2281       case 288:
2282         ret = 289;
2283         break;
2284       case 290:
2285         ret = 291;
2286         break;
2287       case 292:
2288         ret = 293;
2289         break;
2290       case 294:
2291         ret = 295;
2292         break;
2293       case 296:
2294         ret = 297;
2295         break;
2296       case 298:
2297         ret = 299;
2298         break;
2299       case 300:
2300         ret = 301;
2301         break;
2302       case 302:
2303         ret = 303;
2304         break;
2305       case 304:
2306         ret = 105;
2307         break;
2308       case 306:
2309         ret = 307;
2310         break;
2311       case 308:
2312         ret = 309;
2313         break;
2314       case 310:
2315         ret = 311;
2316         break;
2317       case 313:
2318         ret = 314;
2319         break;
2320       case 315:
2321         ret = 316;
2322         break;
2323       case 317:
2324         ret = 318;
2325         break;
2326       case 319:
2327         ret = 320;
2328         break;
2329       case 321:
2330         ret = 322;
2331         break;
2332       case 323:
2333         ret = 324;
2334         break;
2335       case 325:
2336         ret = 326;
2337         break;
2338       case 327:
2339         ret = 328;
2340         break;
2341       case 330:
2342         ret = 331;
2343         break;
2344       case 332:
2345         ret = 333;
2346         break;
2347       case 334:
2348         ret = 335;
2349         break;
2350       case 336:
2351         ret = 337;
2352         break;
2353       case 338:
2354         ret = 339;
2355         break;
2356       case 340:
2357         ret = 341;
2358         break;
2359       case 342:
2360         ret = 343;
2361         break;
2362       case 344:
2363         ret = 345;
2364         break;
2365       case 346:
2366         ret = 347;
2367         break;
2368       case 348:
2369         ret = 349;
2370         break;
2371       case 350:
2372         ret = 351;
2373         break;
2374       case 352:
2375         ret = 353;
2376         break;
2377       case 354:
2378         ret = 355;
2379         break;
2380       case 356:
2381         ret = 357;
2382         break;
2383       case 358:
2384         ret = 359;
2385         break;
2386       case 360:
2387         ret = 361;
2388         break;
2389       case 362:
2390         ret = 363;
2391         break;
2392       case 364:
2393         ret = 365;
2394         break;
2395       case 366:
2396         ret = 367;
2397         break;
2398       case 368:
2399         ret = 369;
2400         break;
2401       case 370:
2402         ret = 371;
2403         break;
2404       case 372:
2405         ret = 373;
2406         break;
2407       case 374:
2408         ret = 375;
2409         break;
2410       case 376:
2411         ret = 255;
2412         break;
2413       case 377:
2414         ret = 378;
2415         break;
2416       case 379:
2417         ret = 380;
2418         break;
2419       case 381:
2420         ret = 382;
2421         break;
2422       case 385:
2423         ret = 595;
2424         break;
2425       case 386:
2426         ret = 387;
2427         break;
2428       case 388:
2429         ret = 389;
2430         break;
2431       case 390:
2432         ret = 596;
2433         break;
2434       case 391:
2435         ret = 392;
2436         break;
2437       case 393:
2438         ret = 598;
2439         break;
2440       case 394:
2441         ret = 599;
2442         break;
2443       case 395:
2444         ret = 396;
2445         break;
2446       case 398:
2447         ret = 600;
2448         break;
2449       case 399:
2450         ret = 601;
2451         break;
2452       case 400:
2453         ret = 603;
2454         break;
2455       case 401:
2456         ret = 402;
2457         break;
2458       case 403:
2459         ret = 608;
2460         break;
2461       case 404:
2462         ret = 611;
2463         break;
2464       case 406:
2465         ret = 617;
2466         break;
2467       case 407:
2468         ret = 616;
2469         break;
2470       case 408:
2471         ret = 409;
2472         break;
2473       case 412:
2474         ret = 623;
2475         break;
2476       case 413:
2477         ret = 626;
2478         break;
2479       case 416:
2480         ret = 417;
2481         break;
2482       case 418:
2483         ret = 419;
2484         break;
2485       case 420:
2486         ret = 421;
2487         break;
2488       case 423:
2489         ret = 424;
2490         break;
2491       case 425:
2492         ret = 643;
2493         break;
2494       case 428:
2495         ret = 429;
2496         break;
2497       case 430:
2498         ret = 648;
2499         break;
2500       case 431:
2501         ret = 432;
2502         break;
2503       case 433:
2504         ret = 650;
2505         break;
2506       case 434:
2507         ret = 651;
2508         break;
2509       case 435:
2510         ret = 436;
2511         break;
2512       case 437:
2513         ret = 438;
2514         break;
2515       case 439:
2516         ret = 658;
2517         break;
2518       case 440:
2519         ret = 441;
2520         break;
2521       case 444:
2522         ret = 445;
2523         break;
2524       case 452:
2525         ret = 454;
2526         break;
2527       case 453:
2528         ret = 454;
2529         break;
2530       case 455:
2531         ret = 457;
2532         break;
2533       case 456:
2534         ret = 457;
2535         break;
2536       case 458:
2537         ret = 460;
2538         break;
2539       case 459:
2540         ret = 460;
2541         break;
2542       case 461:
2543         ret = 462;
2544         break;
2545       case 463:
2546         ret = 464;
2547         break;
2548       case 465:
2549         ret = 466;
2550         break;
2551       case 467:
2552         ret = 468;
2553         break;
2554       case 469:
2555         ret = 470;
2556         break;
2557       case 471:
2558         ret = 472;
2559         break;
2560       case 473:
2561         ret = 474;
2562         break;
2563       case 475:
2564         ret = 476;
2565         break;
2566       case 478:
2567         ret = 479;
2568         break;
2569       case 480:
2570         ret = 481;
2571         break;
2572       case 482:
2573         ret = 483;
2574         break;
2575       case 484:
2576         ret = 485;
2577         break;
2578       case 486:
2579         ret = 487;
2580         break;
2581       case 488:
2582         ret = 489;
2583         break;
2584       case 490:
2585         ret = 491;
2586         break;
2587       case 492:
2588         ret = 493;
2589         break;
2590       case 494:
2591         ret = 495;
2592         break;
2593       case 497:
2594         ret = 499;
2595         break;
2596       case 498:
2597         ret = 499;
2598         break;
2599       case 500:
2600         ret = 501;
2601         break;
2602       case 506:
2603         ret = 507;
2604         break;
2605       case 508:
2606         ret = 509;
2607         break;
2608       case 510:
2609         ret = 511;
2610         break;
2611       case 512:
2612         ret = 513;
2613         break;
2614       case 514:
2615         ret = 515;
2616         break;
2617       case 516:
2618         ret = 517;
2619         break;
2620       case 518:
2621         ret = 519;
2622         break;
2623       case 520:
2624         ret = 521;
2625         break;
2626       case 522:
2627         ret = 523;
2628         break;
2629       case 524:
2630         ret = 525;
2631         break;
2632       case 526:
2633         ret = 527;
2634         break;
2635       case 528:
2636         ret = 529;
2637         break;
2638       case 530:
2639         ret = 531;
2640         break;
2641       case 532:
2642         ret = 533;
2643         break;
2644       case 534:
2645         ret = 535;
2646         break;
2647       case 902:
2648         ret = 940;
2649         break;
2650       case 904:
2651         ret = 941;
2652         break;
2653       case 905:
2654         ret = 942;
2655         break;
2656       case 906:
2657         ret = 943;
2658         break;
2659       case 908:
2660         ret = 972;
2661         break;
2662       case 910:
2663         ret = 973;
2664         break;
2665       case 911:
2666         ret = 974;
2667         break;
2668       case 913:
2669         ret = 945;
2670         break;
2671       case 914:
2672         ret = 946;
2673         break;
2674       case 915:
2675         ret = 947;
2676         break;
2677       case 916:
2678         ret = 948;
2679         break;
2680       case 917:
2681         ret = 949;
2682         break;
2683       case 918:
2684         ret = 950;
2685         break;
2686       case 919:
2687         ret = 951;
2688         break;
2689       case 920:
2690         ret = 952;
2691         break;
2692       case 921:
2693         ret = 953;
2694         break;
2695       case 922:
2696         ret = 954;
2697         break;
2698       case 923:
2699         ret = 955;
2700         break;
2701       case 924:
2702         ret = 956;
2703         break;
2704       case 925:
2705         ret = 957;
2706         break;
2707       case 926:
2708         ret = 958;
2709         break;
2710       case 927:
2711         ret = 959;
2712         break;
2713       case 928:
2714         ret = 960;
2715         break;
2716       case 929:
2717         ret = 961;
2718         break;
2719       case 931:
2720         ret = 963;
2721         break;
2722       case 932:
2723         ret = 964;
2724         break;
2725       case 933:
2726         ret = 965;
2727         break;
2728       case 934:
2729         ret = 966;
2730         break;
2731       case 935:
2732         ret = 967;
2733         break;
2734       case 936:
2735         ret = 968;
2736         break;
2737       case 937:
2738         ret = 969;
2739         break;
2740       case 938:
2741         ret = 970;
2742         break;
2743       case 939:
2744         ret = 971;
2745         break;
2746       case 994:
2747         ret = 995;
2748         break;
2749       case 996:
2750         ret = 997;
2751         break;
2752       case 998:
2753         ret = 999;
2754         break;
2755       case 1000:
2756         ret = 1001;
2757         break;
2758       case 1002:
2759         ret = 1003;
2760         break;
2761       case 1004:
2762         ret = 1005;
2763         break;
2764       case 1006:
2765         ret = 1007;
2766         break;
2767       case 1025:
2768         ret = 1105;
2769         break;
2770       case 1026:
2771         ret = 1106;
2772         break;
2773       case 1027:
2774         ret = 1107;
2775         break;
2776       case 1028:
2777         ret = 1108;
2778         break;
2779       case 1029:
2780         ret = 1109;
2781         break;
2782       case 1030:
2783         ret = 1110;
2784         break;
2785       case 1031:
2786         ret = 1111;
2787         break;
2788       case 1032:
2789         ret = 1112;
2790         break;
2791       case 1033:
2792         ret = 1113;
2793         break;
2794       case 1034:
2795         ret = 1114;
2796         break;
2797       case 1035:
2798         ret = 1115;
2799         break;
2800       case 1036:
2801         ret = 1116;
2802         break;
2803       case 1038:
2804         ret = 1118;
2805         break;
2806       case 1039:
2807         ret = 1119;
2808         break;
2809       case 1040:
2810         ret = 1072;
2811         break;
2812       case 1041:
2813         ret = 1073;
2814         break;
2815       case 1042:
2816         ret = 1074;
2817         break;
2818       case 1043:
2819         ret = 1075;
2820         break;
2821       case 1044:
2822         ret = 1076;
2823         break;
2824       case 1045:
2825         ret = 1077;
2826         break;
2827       case 1046:
2828         ret = 1078;
2829         break;
2830       case 1047:
2831         ret = 1079;
2832         break;
2833       case 1048:
2834         ret = 1080;
2835         break;
2836       case 1049:
2837         ret = 1081;
2838         break;
2839       case 1050:
2840         ret = 1082;
2841         break;
2842       case 1051:
2843         ret = 1083;
2844         break;
2845       case 1052:
2846         ret = 1084;
2847         break;
2848       case 1053:
2849         ret = 1085;
2850         break;
2851       case 1054:
2852         ret = 1086;
2853         break;
2854       case 1055:
2855         ret = 1087;
2856         break;
2857       case 1056:
2858         ret = 1088;
2859         break;
2860       case 1057:
2861         ret = 1089;
2862         break;
2863       case 1058:
2864         ret = 1090;
2865         break;
2866       case 1059:
2867         ret = 1091;
2868         break;
2869       case 1060:
2870         ret = 1092;
2871         break;
2872       case 1061:
2873         ret = 1093;
2874         break;
2875       case 1062:
2876         ret = 1094;
2877         break;
2878       case 1063:
2879         ret = 1095;
2880         break;
2881       case 1064:
2882         ret = 1096;
2883         break;
2884       case 1065:
2885         ret = 1097;
2886         break;
2887       case 1066:
2888         ret = 1098;
2889         break;
2890       case 1067:
2891         ret = 1099;
2892         break;
2893       case 1068:
2894         ret = 1100;
2895         break;
2896       case 1069:
2897         ret = 1101;
2898         break;
2899       case 1070:
2900         ret = 1102;
2901         break;
2902       case 1071:
2903         ret = 1103;
2904         break;
2905       case 1120:
2906         ret = 1121;
2907         break;
2908       case 1122:
2909         ret = 1123;
2910         break;
2911       case 1124:
2912         ret = 1125;
2913         break;
2914       case 1126:
2915         ret = 1127;
2916         break;
2917       case 1128:
2918         ret = 1129;
2919         break;
2920       case 1130:
2921         ret = 1131;
2922         break;
2923       case 1132:
2924         ret = 1133;
2925         break;
2926       case 1134:
2927         ret = 1135;
2928         break;
2929       case 1136:
2930         ret = 1137;
2931         break;
2932       case 1138:
2933         ret = 1139;
2934         break;
2935       case 1140:
2936         ret = 1141;
2937         break;
2938       case 1142:
2939         ret = 1143;
2940         break;
2941       case 1144:
2942         ret = 1145;
2943         break;
2944       case 1146:
2945         ret = 1147;
2946         break;
2947       case 1148:
2948         ret = 1149;
2949         break;
2950       case 1150:
2951         ret = 1151;
2952         break;
2953       case 1152:
2954         ret = 1153;
2955         break;
2956       case 1168:
2957         ret = 1169;
2958         break;
2959       case 1170:
2960         ret = 1171;
2961         break;
2962       case 1172:
2963         ret = 1173;
2964         break;
2965       case 1174:
2966         ret = 1175;
2967         break;
2968       case 1176:
2969         ret = 1177;
2970         break;
2971       case 1178:
2972         ret = 1179;
2973         break;
2974       case 1180:
2975         ret = 1181;
2976         break;
2977       case 1182:
2978         ret = 1183;
2979         break;
2980       case 1184:
2981         ret = 1185;
2982         break;
2983       case 1186:
2984         ret = 1187;
2985         break;
2986       case 1188:
2987         ret = 1189;
2988         break;
2989       case 1190:
2990         ret = 1191;
2991         break;
2992       case 1192:
2993         ret = 1193;
2994         break;
2995       case 1194:
2996         ret = 1195;
2997         break;
2998       case 1196:
2999         ret = 1197;
3000         break;
3001       case 1198:
3002         ret = 1199;
3003         break;
3004       case 1200:
3005         ret = 1201;
3006         break;
3007       case 1202:
3008         ret = 1203;
3009         break;
3010       case 1204:
3011         ret = 1205;
3012         break;
3013       case 1206:
3014         ret = 1207;
3015         break;
3016       case 1208:
3017         ret = 1209;
3018         break;
3019       case 1210:
3020         ret = 1211;
3021         break;
3022       case 1212:
3023         ret = 1213;
3024         break;
3025       case 1214:
3026         ret = 1215;
3027         break;
3028       case 1217:
3029         ret = 1218;
3030         break;
3031       case 1219:
3032         ret = 1220;
3033         break;
3034       case 1223:
3035         ret = 1224;
3036         break;
3037       case 1227:
3038         ret = 1228;
3039         break;
3040       case 1232:
3041         ret = 1233;
3042         break;
3043       case 1234:
3044         ret = 1235;
3045         break;
3046       case 1236:
3047         ret = 1237;
3048         break;
3049       case 1238:
3050         ret = 1239;
3051         break;
3052       case 1240:
3053         ret = 1241;
3054         break;
3055       case 1242:
3056         ret = 1243;
3057         break;
3058       case 1244:
3059         ret = 1245;
3060         break;
3061       case 1246:
3062         ret = 1247;
3063         break;
3064       case 1248:
3065         ret = 1249;
3066         break;
3067       case 1250:
3068         ret = 1251;
3069         break;
3070       case 1252:
3071         ret = 1253;
3072         break;
3073       case 1254:
3074         ret = 1255;
3075         break;
3076       case 1256:
3077         ret = 1257;
3078         break;
3079       case 1258:
3080         ret = 1259;
3081         break;
3082       case 1262:
3083         ret = 1263;
3084         break;
3085       case 1264:
3086         ret = 1265;
3087         break;
3088       case 1266:
3089         ret = 1267;
3090         break;
3091       case 1268:
3092         ret = 1269;
3093         break;
3094       case 1272:
3095         ret = 1273;
3096         break;
3097       case 1329:
3098         ret = 1377;
3099         break;
3100       case 1330:
3101         ret = 1378;
3102         break;
3103       case 1331:
3104         ret = 1379;
3105         break;
3106       case 1332:
3107         ret = 1380;
3108         break;
3109       case 1333:
3110         ret = 1381;
3111         break;
3112       case 1334:
3113         ret = 1382;
3114         break;
3115       case 1335:
3116         ret = 1383;
3117         break;
3118       case 1336:
3119         ret = 1384;
3120         break;
3121       case 1337:
3122         ret = 1385;
3123         break;
3124       case 1338:
3125         ret = 1386;
3126         break;
3127       case 1339:
3128         ret = 1387;
3129         break;
3130       case 1340:
3131         ret = 1388;
3132         break;
3133       case 1341:
3134         ret = 1389;
3135         break;
3136       case 1342:
3137         ret = 1390;
3138         break;
3139       case 1343:
3140         ret = 1391;
3141         break;
3142       case 1344:
3143         ret = 1392;
3144         break;
3145       case 1345:
3146         ret = 1393;
3147         break;
3148       case 1346:
3149         ret = 1394;
3150         break;
3151       case 1347:
3152         ret = 1395;
3153         break;
3154       case 1348:
3155         ret = 1396;
3156         break;
3157       case 1349:
3158         ret = 1397;
3159         break;
3160       case 1350:
3161         ret = 1398;
3162         break;
3163       case 1351:
3164         ret = 1399;
3165         break;
3166       case 1352:
3167         ret = 1400;
3168         break;
3169       case 1353:
3170         ret = 1401;
3171         break;
3172       case 1354:
3173         ret = 1402;
3174         break;
3175       case 1355:
3176         ret = 1403;
3177         break;
3178       case 1356:
3179         ret = 1404;
3180         break;
3181       case 1357:
3182         ret = 1405;
3183         break;
3184       case 1358:
3185         ret = 1406;
3186         break;
3187       case 1359:
3188         ret = 1407;
3189         break;
3190       case 1360:
3191         ret = 1408;
3192         break;
3193       case 1361:
3194         ret = 1409;
3195         break;
3196       case 1362:
3197         ret = 1410;
3198         break;
3199       case 1363:
3200         ret = 1411;
3201         break;
3202       case 1364:
3203         ret = 1412;
3204         break;
3205       case 1365:
3206         ret = 1413;
3207         break;
3208       case 1366:
3209         ret = 1414;
3210         break;
3211       case 4256:
3212         ret = 4304;
3213         break;
3214       case 4257:
3215         ret = 4305;
3216         break;
3217       case 4258:
3218         ret = 4306;
3219         break;
3220       case 4259:
3221         ret = 4307;
3222         break;
3223       case 4260:
3224         ret = 4308;
3225         break;
3226       case 4261:
3227         ret = 4309;
3228         break;
3229       case 4262:
3230         ret = 4310;
3231         break;
3232       case 4263:
3233         ret = 4311;
3234         break;
3235       case 4264:
3236         ret = 4312;
3237         break;
3238       case 4265:
3239         ret = 4313;
3240         break;
3241       case 4266:
3242         ret = 4314;
3243         break;
3244       case 4267:
3245         ret = 4315;
3246         break;
3247       case 4268:
3248         ret = 4316;
3249         break;
3250       case 4269:
3251         ret = 4317;
3252         break;
3253       case 4270:
3254         ret = 4318;
3255         break;
3256       case 4271:
3257         ret = 4319;
3258         break;
3259       case 4272:
3260         ret = 4320;
3261         break;
3262       case 4273:
3263         ret = 4321;
3264         break;
3265       case 4274:
3266         ret = 4322;
3267         break;
3268       case 4275:
3269         ret = 4323;
3270         break;
3271       case 4276:
3272         ret = 4324;
3273         break;
3274       case 4277:
3275         ret = 4325;
3276         break;
3277       case 4278:
3278         ret = 4326;
3279         break;
3280       case 4279:
3281         ret = 4327;
3282         break;
3283       case 4280:
3284         ret = 4328;
3285         break;
3286       case 4281:
3287         ret = 4329;
3288         break;
3289       case 4282:
3290         ret = 4330;
3291         break;
3292       case 4283:
3293         ret = 4331;
3294         break;
3295       case 4284:
3296         ret = 4332;
3297         break;
3298       case 4285:
3299         ret = 4333;
3300         break;
3301       case 4286:
3302         ret = 4334;
3303         break;
3304       case 4287:
3305         ret = 4335;
3306         break;
3307       case 4288:
3308         ret = 4336;
3309         break;
3310       case 4289:
3311         ret = 4337;
3312         break;
3313       case 4290:
3314         ret = 4338;
3315         break;
3316       case 4291:
3317         ret = 4339;
3318         break;
3319       case 4292:
3320         ret = 4340;
3321         break;
3322       case 4293:
3323         ret = 4341;
3324         break;
3325       case 7680:
3326         ret = 7681;
3327         break;
3328       case 7682:
3329         ret = 7683;
3330         break;
3331       case 7684:
3332         ret = 7685;
3333         break;
3334       case 7686:
3335         ret = 7687;
3336         break;
3337       case 7688:
3338         ret = 7689;
3339         break;
3340       case 7690:
3341         ret = 7691;
3342         break;
3343       case 7692:
3344         ret = 7693;
3345         break;
3346       case 7694:
3347         ret = 7695;
3348         break;
3349       case 7696:
3350         ret = 7697;
3351         break;
3352       case 7698:
3353         ret = 7699;
3354         break;
3355       case 7700:
3356         ret = 7701;
3357         break;
3358       case 7702:
3359         ret = 7703;
3360         break;
3361       case 7704:
3362         ret = 7705;
3363         break;
3364       case 7706:
3365         ret = 7707;
3366         break;
3367       case 7708:
3368         ret = 7709;
3369         break;
3370       case 7710:
3371         ret = 7711;
3372         break;
3373       case 7712:
3374         ret = 7713;
3375         break;
3376       case 7714:
3377         ret = 7715;
3378         break;
3379       case 7716:
3380         ret = 7717;
3381         break;
3382       case 7718:
3383         ret = 7719;
3384         break;
3385       case 7720:
3386         ret = 7721;
3387         break;
3388       case 7722:
3389         ret = 7723;
3390         break;
3391       case 7724:
3392         ret = 7725;
3393         break;
3394       case 7726:
3395         ret = 7727;
3396         break;
3397       case 7728:
3398         ret = 7729;
3399         break;
3400       case 7730:
3401         ret = 7731;
3402         break;
3403       case 7732:
3404         ret = 7733;
3405         break;
3406       case 7734:
3407         ret = 7735;
3408         break;
3409       case 7736:
3410         ret = 7737;
3411         break;
3412       case 7738:
3413         ret = 7739;
3414         break;
3415       case 7740:
3416         ret = 7741;
3417         break;
3418       case 7742:
3419         ret = 7743;
3420         break;
3421       case 7744:
3422         ret = 7745;
3423         break;
3424       case 7746:
3425         ret = 7747;
3426         break;
3427       case 7748:
3428         ret = 7749;
3429         break;
3430       case 7750:
3431         ret = 7751;
3432         break;
3433       case 7752:
3434         ret = 7753;
3435         break;
3436       case 7754:
3437         ret = 7755;
3438         break;
3439       case 7756:
3440         ret = 7757;
3441         break;
3442       case 7758:
3443         ret = 7759;
3444         break;
3445       case 7760:
3446         ret = 7761;
3447         break;
3448       case 7762:
3449         ret = 7763;
3450         break;
3451       case 7764:
3452         ret = 7765;
3453         break;
3454       case 7766:
3455         ret = 7767;
3456         break;
3457       case 7768:
3458         ret = 7769;
3459         break;
3460       case 7770:
3461         ret = 7771;
3462         break;
3463       case 7772:
3464         ret = 7773;
3465         break;
3466       case 7774:
3467         ret = 7775;
3468         break;
3469       case 7776:
3470         ret = 7777;
3471         break;
3472       case 7778:
3473         ret = 7779;
3474         break;
3475       case 7780:
3476         ret = 7781;
3477         break;
3478       case 7782:
3479         ret = 7783;
3480         break;
3481       case 7784:
3482         ret = 7785;
3483         break;
3484       case 7786:
3485         ret = 7787;
3486         break;
3487       case 7788:
3488         ret = 7789;
3489         break;
3490       case 7790:
3491         ret = 7791;
3492         break;
3493       case 7792:
3494         ret = 7793;
3495         break;
3496       case 7794:
3497         ret = 7795;
3498         break;
3499       case 7796:
3500         ret = 7797;
3501         break;
3502       case 7798:
3503         ret = 7799;
3504         break;
3505       case 7800:
3506         ret = 7801;
3507         break;
3508       case 7802:
3509         ret = 7803;
3510         break;
3511       case 7804:
3512         ret = 7805;
3513         break;
3514       case 7806:
3515         ret = 7807;
3516         break;
3517       case 7808:
3518         ret = 7809;
3519         break;
3520       case 7810:
3521         ret = 7811;
3522         break;
3523       case 7812:
3524         ret = 7813;
3525         break;
3526       case 7814:
3527         ret = 7815;
3528         break;
3529       case 7816:
3530         ret = 7817;
3531         break;
3532       case 7818:
3533         ret = 7819;
3534         break;
3535       case 7820:
3536         ret = 7821;
3537         break;
3538       case 7822:
3539         ret = 7823;
3540         break;
3541       case 7824:
3542         ret = 7825;
3543         break;
3544       case 7826:
3545         ret = 7827;
3546         break;
3547       case 7828:
3548         ret = 7829;
3549         break;
3550       case 7840:
3551         ret = 7841;
3552         break;
3553       case 7842:
3554         ret = 7843;
3555         break;
3556       case 7844:
3557         ret = 7845;
3558         break;
3559       case 7846:
3560         ret = 7847;
3561         break;
3562       case 7848:
3563         ret = 7849;
3564         break;
3565       case 7850:
3566         ret = 7851;
3567         break;
3568       case 7852:
3569         ret = 7853;
3570         break;
3571       case 7854:
3572         ret = 7855;
3573         break;
3574       case 7856:
3575         ret = 7857;
3576         break;
3577       case 7858:
3578         ret = 7859;
3579         break;
3580       case 7860:
3581         ret = 7861;
3582         break;
3583       case 7862:
3584         ret = 7863;
3585         break;
3586       case 7864:
3587         ret = 7865;
3588         break;
3589       case 7866:
3590         ret = 7867;
3591         break;
3592       case 7868:
3593         ret = 7869;
3594         break;
3595       case 7870:
3596         ret = 7871;
3597         break;
3598       case 7872:
3599         ret = 7873;
3600         break;
3601       case 7874:
3602         ret = 7875;
3603         break;
3604       case 7876:
3605         ret = 7877;
3606         break;
3607       case 7878:
3608         ret = 7879;
3609         break;
3610       case 7880:
3611         ret = 7881;
3612         break;
3613       case 7882:
3614         ret = 7883;
3615         break;
3616       case 7884:
3617         ret = 7885;
3618         break;
3619       case 7886:
3620         ret = 7887;
3621         break;
3622       case 7888:
3623         ret = 7889;
3624         break;
3625       case 7890:
3626         ret = 7891;
3627         break;
3628       case 7892:
3629         ret = 7893;
3630         break;
3631       case 7894:
3632         ret = 7895;
3633         break;
3634       case 7896:
3635         ret = 7897;
3636         break;
3637       case 7898:
3638         ret = 7899;
3639         break;
3640       case 7900:
3641         ret = 7901;
3642         break;
3643       case 7902:
3644         ret = 7903;
3645         break;
3646       case 7904:
3647         ret = 7905;
3648         break;
3649       case 7906:
3650         ret = 7907;
3651         break;
3652       case 7908:
3653         ret = 7909;
3654         break;
3655       case 7910:
3656         ret = 7911;
3657         break;
3658       case 7912:
3659         ret = 7913;
3660         break;
3661       case 7914:
3662         ret = 7915;
3663         break;
3664       case 7916:
3665         ret = 7917;
3666         break;
3667       case 7918:
3668         ret = 7919;
3669         break;
3670       case 7920:
3671         ret = 7921;
3672         break;
3673       case 7922:
3674         ret = 7923;
3675         break;
3676       case 7924:
3677         ret = 7925;
3678         break;
3679       case 7926:
3680         ret = 7927;
3681         break;
3682       case 7928:
3683         ret = 7929;
3684         break;
3685       case 7944:
3686         ret = 7936;
3687         break;
3688       case 7945:
3689         ret = 7937;
3690         break;
3691       case 7946:
3692         ret = 7938;
3693         break;
3694       case 7947:
3695         ret = 7939;
3696         break;
3697       case 7948:
3698         ret = 7940;
3699         break;
3700       case 7949:
3701         ret = 7941;
3702         break;
3703       case 7950:
3704         ret = 7942;
3705         break;
3706       case 7951:
3707         ret = 7943;
3708         break;
3709       case 7960:
3710         ret = 7952;
3711         break;
3712       case 7961:
3713         ret = 7953;
3714         break;
3715       case 7962:
3716         ret = 7954;
3717         break;
3718       case 7963:
3719         ret = 7955;
3720         break;
3721       case 7964:
3722         ret = 7956;
3723         break;
3724       case 7965:
3725         ret = 7957;
3726         break;
3727       case 7976:
3728         ret = 7968;
3729         break;
3730       case 7977:
3731         ret = 7969;
3732         break;
3733       case 7978:
3734         ret = 7970;
3735         break;
3736       case 7979:
3737         ret = 7971;
3738         break;
3739       case 7980:
3740         ret = 7972;
3741         break;
3742       case 7981:
3743         ret = 7973;
3744         break;
3745       case 7982:
3746         ret = 7974;
3747         break;
3748       case 7983:
3749         ret = 7975;
3750         break;
3751       case 7992:
3752         ret = 7984;
3753         break;
3754       case 7993:
3755         ret = 7985;
3756         break;
3757       case 7994:
3758         ret = 7986;
3759         break;
3760       case 7995:
3761         ret = 7987;
3762         break;
3763       case 7996:
3764         ret = 7988;
3765         break;
3766       case 7997:
3767         ret = 7989;
3768         break;
3769       case 7998:
3770         ret = 7990;
3771         break;
3772       case 7999:
3773         ret = 7991;
3774         break;
3775       case 8008:
3776         ret = 8000;
3777         break;
3778       case 8009:
3779         ret = 8001;
3780         break;
3781       case 8010:
3782         ret = 8002;
3783         break;
3784       case 8011:
3785         ret = 8003;
3786         break;
3787       case 8012:
3788         ret = 8004;
3789         break;
3790       case 8013:
3791         ret = 8005;
3792         break;
3793       case 8025:
3794         ret = 8017;
3795         break;
3796       case 8027:
3797         ret = 8019;
3798         break;
3799       case 8029:
3800         ret = 8021;
3801         break;
3802       case 8031:
3803         ret = 8023;
3804         break;
3805       case 8040:
3806         ret = 8032;
3807         break;
3808       case 8041:
3809         ret = 8033;
3810         break;
3811       case 8042:
3812         ret = 8034;
3813         break;
3814       case 8043:
3815         ret = 8035;
3816         break;
3817       case 8044:
3818         ret = 8036;
3819         break;
3820       case 8045:
3821         ret = 8037;
3822         break;
3823       case 8046:
3824         ret = 8038;
3825         break;
3826       case 8047:
3827         ret = 8039;
3828         break;
3829       case 8072:
3830         ret = 8064;
3831         break;
3832       case 8073:
3833         ret = 8065;
3834         break;
3835       case 8074:
3836         ret = 8066;
3837         break;
3838       case 8075:
3839         ret = 8067;
3840         break;
3841       case 8076:
3842         ret = 8068;
3843         break;
3844       case 8077:
3845         ret = 8069;
3846         break;
3847       case 8078:
3848         ret = 8070;
3849         break;
3850       case 8079:
3851         ret = 8071;
3852         break;
3853       case 8088:
3854         ret = 8080;
3855         break;
3856       case 8089:
3857         ret = 8081;
3858         break;
3859       case 8090:
3860         ret = 8082;
3861         break;
3862       case 8091:
3863         ret = 8083;
3864         break;
3865       case 8092:
3866         ret = 8084;
3867         break;
3868       case 8093:
3869         ret = 8085;
3870         break;
3871       case 8094:
3872         ret = 8086;
3873         break;
3874       case 8095:
3875         ret = 8087;
3876         break;
3877       case 8104:
3878         ret = 8096;
3879         break;
3880       case 8105:
3881         ret = 8097;
3882         break;
3883       case 8106:
3884         ret = 8098;
3885         break;
3886       case 8107:
3887         ret = 8099;
3888         break;
3889       case 8108:
3890         ret = 8100;
3891         break;
3892       case 8109:
3893         ret = 8101;
3894         break;
3895       case 8110:
3896         ret = 8102;
3897         break;
3898       case 8111:
3899         ret = 8103;
3900         break;
3901       case 8120:
3902         ret = 8112;
3903         break;
3904       case 8121:
3905         ret = 8113;
3906         break;
3907       case 8122:
3908         ret = 8048;
3909         break;
3910       case 8123:
3911         ret = 8049;
3912         break;
3913       case 8124:
3914         ret = 8115;
3915         break;
3916       case 8136:
3917         ret = 8050;
3918         break;
3919       case 8137:
3920         ret = 8051;
3921         break;
3922       case 8138:
3923         ret = 8052;
3924         break;
3925       case 8139:
3926         ret = 8053;
3927         break;
3928       case 8140:
3929         ret = 8131;
3930         break;
3931       case 8152:
3932         ret = 8144;
3933         break;
3934       case 8153:
3935         ret = 8145;
3936         break;
3937       case 8154:
3938         ret = 8054;
3939         break;
3940       case 8155:
3941         ret = 8055;
3942         break;
3943       case 8168:
3944         ret = 8160;
3945         break;
3946       case 8169:
3947         ret = 8161;
3948         break;
3949       case 8170:
3950         ret = 8058;
3951         break;
3952       case 8171:
3953         ret = 8059;
3954         break;
3955       case 8172:
3956         ret = 8165;
3957         break;
3958       case 8184:
3959         ret = 8056;
3960         break;
3961       case 8185:
3962         ret = 8057;
3963         break;
3964       case 8186:
3965         ret = 8060;
3966         break;
3967       case 8187:
3968         ret = 8061;
3969         break;
3970       case 8188:
3971         ret = 8179;
3972         break;
3973       case 8544:
3974         ret = 8560;
3975         break;
3976       case 8545:
3977         ret = 8561;
3978         break;
3979       case 8546:
3980         ret = 8562;
3981         break;
3982       case 8547:
3983         ret = 8563;
3984         break;
3985       case 8548:
3986         ret = 8564;
3987         break;
3988       case 8549:
3989         ret = 8565;
3990         break;
3991       case 8550:
3992         ret = 8566;
3993         break;
3994       case 8551:
3995         ret = 8567;
3996         break;
3997       case 8552:
3998         ret = 8568;
3999         break;
4000       case 8553:
4001         ret = 8569;
4002         break;
4003       case 8554:
4004         ret = 8570;
4005         break;
4006       case 8555:
4007         ret = 8571;
4008         break;
4009       case 8556:
4010         ret = 8572;
4011         break;
4012       case 8557:
4013         ret = 8573;
4014         break;
4015       case 8558:
4016         ret = 8574;
4017         break;
4018       case 8559:
4019         ret = 8575;
4020         break;
4021       case 9398:
4022         ret = 9424;
4023         break;
4024       case 9399:
4025         ret = 9425;
4026         break;
4027       case 9400:
4028         ret = 9426;
4029         break;
4030       case 9401:
4031         ret = 9427;
4032         break;
4033       case 9402:
4034         ret = 9428;
4035         break;
4036       case 9403:
4037         ret = 9429;
4038         break;
4039       case 9404:
4040         ret = 9430;
4041         break;
4042       case 9405:
4043         ret = 9431;
4044         break;
4045       case 9406:
4046         ret = 9432;
4047         break;
4048       case 9407:
4049         ret = 9433;
4050         break;
4051       case 9408:
4052         ret = 9434;
4053         break;
4054       case 9409:
4055         ret = 9435;
4056         break;
4057       case 9410:
4058         ret = 9436;
4059         break;
4060       case 9411:
4061         ret = 9437;
4062         break;
4063       case 9412:
4064         ret = 9438;
4065         break;
4066       case 9413:
4067         ret = 9439;
4068         break;
4069       case 9414:
4070         ret = 9440;
4071         break;
4072       case 9415:
4073         ret = 9441;
4074         break;
4075       case 9416:
4076         ret = 9442;
4077         break;
4078       case 9417:
4079         ret = 9443;
4080         break;
4081       case 9418:
4082         ret = 9444;
4083         break;
4084       case 9419:
4085         ret = 9445;
4086         break;
4087       case 9420:
4088         ret = 9446;
4089         break;
4090       case 9421:
4091         ret = 9447;
4092         break;
4093       case 9422:
4094         ret = 9448;
4095         break;
4096       case 9423:
4097         ret = 9449;
4098         break;
4099       case 65313:
4100         ret = 65345;
4101         break;
4102       case 65314:
4103         ret = 65346;
4104         break;
4105       case 65315:
4106         ret = 65347;
4107         break;
4108       case 65316:
4109         ret = 65348;
4110         break;
4111       case 65317:
4112         ret = 65349;
4113         break;
4114       case 65318:
4115         ret = 65350;
4116         break;
4117       case 65319:
4118         ret = 65351;
4119         break;
4120       case 65320:
4121         ret = 65352;
4122         break;
4123       case 65321:
4124         ret = 65353;
4125         break;
4126       case 65322:
4127         ret = 65354;
4128         break;
4129       case 65323:
4130         ret = 65355;
4131         break;
4132       case 65324:
4133         ret = 65356;
4134         break;
4135       case 65325:
4136         ret = 65357;
4137         break;
4138       case 65326:
4139         ret = 65358;
4140         break;
4141       case 65327:
4142         ret = 65359;
4143         break;
4144       case 65328:
4145         ret = 65360;
4146         break;
4147       case 65329:
4148         ret = 65361;
4149         break;
4150       case 65330:
4151         ret = 65362;
4152         break;
4153       case 65331:
4154         ret = 65363;
4155         break;
4156       case 65332:
4157         ret = 65364;
4158         break;
4159       case 65333:
4160         ret = 65365;
4161         break;
4162       case 65334:
4163         ret = 65366;
4164         break;
4165       case 65335:
4166         ret = 65367;
4167         break;
4168       case 65336:
4169         ret = 65368;
4170         break;
4171       case 65337:
4172         ret = 65369;
4173         break;
4174       case 65338:
4175         ret = 65370;
4176         break;
4177       }
4178       return (char) ret;
4179     }
4180     return Character.toLowerCase(c);
4181   }
4182
4183   /** Convert a String to title case. */
4184   public static String toTitleCase(String s)
4185   {
4186     StringBuffer sb = new StringBuffer();
4187     for (int i = 0; i < s.length(); i++)
4188     {
4189       sb.append(CaseMgr.toTitleCase(s.charAt(i)));
4190     }
4191     return sb.toString();
4192   }
4193
4194   /** Convert a String to upper case. */
4195   public static String toUpperCase(String s)
4196   {
4197     StringBuffer sb = new StringBuffer();
4198     for (int i = 0; i < s.length(); i++)
4199     {
4200       sb.append(CaseMgr.toUpperCase(s.charAt(i)));
4201     }
4202     return sb.toString();
4203   }
4204
4205   /** Convert a String to lower case. */
4206   public static String toLowerCase(String s)
4207   {
4208     StringBuffer sb = new StringBuffer();
4209     for (int i = 0; i < s.length(); i++)
4210     {
4211       sb.append(CaseMgr.toLowerCase(s.charAt(i)));
4212     }
4213     return sb.toString();
4214   }
4215
4216   /** Convert a character to title case. */
4217   public static char toTitleCase(char c)
4218   {
4219     if (java_1_0)
4220     {
4221       int ret = (int) toUpperCase(c);
4222       switch (c)
4223       {
4224       case 452:
4225         ret = 453;
4226         break;
4227       case 453:
4228         ret = 453;
4229         break;
4230       case 454:
4231         ret = 453;
4232         break;
4233       case 455:
4234         ret = 456;
4235         break;
4236       case 456:
4237         ret = 456;
4238         break;
4239       case 457:
4240         ret = 456;
4241         break;
4242       case 458:
4243         ret = 459;
4244         break;
4245       case 459:
4246         ret = 459;
4247         break;
4248       case 460:
4249         ret = 459;
4250         break;
4251       case 497:
4252         ret = 498;
4253         break;
4254       case 498:
4255         ret = 498;
4256         break;
4257       case 499:
4258         ret = 498;
4259         break;
4260       }
4261       return (char) ret;
4262     }
4263     return Character.toTitleCase(c);
4264   }
4265
4266   /**
4267    * Duplicates the regionMatches routine of String -- but makes use of the
4268    * definitions of upper, lower, and title case in this class when ignoreCase
4269    * is set.
4270    */
4271   public static boolean regionMatches(StringLike s1, boolean ign, int i1,
4272           StringLike s2, int i2, int i3)
4273   {
4274     int itot = i2 + i3;
4275     if (itot > s2.length() || i1 + i3 > s1.length())
4276     {
4277       return false;
4278     }
4279     if (!ign)
4280     {
4281       for (int i = i2; i < itot; i++)
4282       {
4283         if (s2.charAt(i) != s1.charAt(i1++))
4284         {
4285           return false;
4286         }
4287       }
4288     }
4289     else
4290     {
4291       for (int i = i2; i < itot; i++)
4292       {
4293         if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
4294         {
4295           return false;
4296         }
4297       }
4298     }
4299     return true;
4300   }
4301
4302   /**
4303    * Duplicates the regionMatches routine of String -- but makes use of the
4304    * definitions of upper, lower, and title case in this class when ignoreCase
4305    * is set.
4306    */
4307   public static boolean regionMatches(String s1, boolean ign, int i1,
4308           StringLike s2, int i2, int i3)
4309   {
4310     int itot = i2 + i3;
4311     if (itot > s2.length() || i1 + i3 > s1.length())
4312     {
4313       return false;
4314     }
4315     if (!ign)
4316     {
4317       for (int i = i2; i < itot; i++)
4318       {
4319         if (s2.charAt(i) != s1.charAt(i1++))
4320         {
4321           return false;
4322         }
4323       }
4324     }
4325     else
4326     {
4327       for (int i = i2; i < itot; i++)
4328       {
4329         if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
4330         {
4331           return false;
4332         }
4333       }
4334     }
4335     return true;
4336   }
4337
4338   /**
4339    * Duplicates the regionMatches routine of String -- but makes use of the
4340    * definitions of upper, lower, and title case in this class when ignoreCase
4341    * is set.
4342    */
4343   public static boolean regionMatches(StringLike s1, boolean ign, int i1,
4344           String s2, int i2, int i3)
4345   {
4346     int itot = i2 + i3;
4347     if (itot > s2.length() || i1 + i3 > s1.length())
4348     {
4349       return false;
4350     }
4351     if (!ign)
4352     {
4353       for (int i = i2; i < itot; i++)
4354       {
4355         if (s2.charAt(i) != s1.charAt(i1++))
4356         {
4357           return false;
4358         }
4359       }
4360     }
4361     else
4362     {
4363       for (int i = i2; i < itot; i++)
4364       {
4365         if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
4366         {
4367           return false;
4368         }
4369       }
4370     }
4371     return true;
4372   }
4373
4374   /**
4375    * Duplicates the regionMatches routine of String -- but makes use of the
4376    * definitions of upper, lower, and title case in this class when ignoreCase
4377    * is set.
4378    */
4379   public static boolean regionMatches(String s1, boolean ign, int i1,
4380           String s2, int i2, int i3)
4381   {
4382     int itot = i2 + i3;
4383     if (itot > s2.length() || i1 + i3 > s1.length())
4384     {
4385       return false;
4386     }
4387     if (!ign)
4388     {
4389       for (int i = i2; i < itot; i++)
4390       {
4391         if (s2.charAt(i) != s1.charAt(i1++))
4392         {
4393           return false;
4394         }
4395       }
4396     }
4397     else
4398     {
4399       for (int i = i2; i < itot; i++)
4400       {
4401         if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
4402         {
4403           return false;
4404         }
4405       }
4406     }
4407     return true;
4408   }
4409 }