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