github.com/dolthub/go-mysql-server@v0.18.0/sql/encodings/utf32.go (about)

     1  // Copyright 2022 Dolthub, Inc.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package encodings
    16  
    17  // Utf32 represents the `utf32` character set encoding.
    18  var Utf32 Encoder = &RangeMap{
    19  	inputEntries: [][]rangeMapEntry{
    20  		nil,
    21  		nil,
    22  		nil,
    23  		{
    24  			{
    25  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {0, 0}, {0, 127}},
    26  				outputRange: rangeBounds{{0, 127}},
    27  				inputMults:  []int{128, 128, 128, 1},
    28  				outputMults: []int{1},
    29  			},
    30  			{
    31  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {0, 0}, {128, 255}},
    32  				outputRange: rangeBounds{{194, 195}, {128, 191}},
    33  				inputMults:  []int{128, 128, 128, 1},
    34  				outputMults: []int{64, 1},
    35  			},
    36  			{
    37  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {1, 7}, {0, 255}},
    38  				outputRange: rangeBounds{{196, 223}, {128, 191}},
    39  				inputMults:  []int{1792, 1792, 256, 1},
    40  				outputMults: []int{64, 1},
    41  			},
    42  			{
    43  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {8, 15}, {0, 255}},
    44  				outputRange: rangeBounds{{224, 224}, {160, 191}, {128, 191}},
    45  				inputMults:  []int{2048, 2048, 256, 1},
    46  				outputMults: []int{2048, 64, 1},
    47  			},
    48  			{
    49  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {16, 215}, {0, 255}},
    50  				outputRange: rangeBounds{{225, 237}, {128, 191}, {128, 191}},
    51  				inputMults:  []int{51200, 51200, 256, 1},
    52  				outputMults: []int{4096, 64, 1},
    53  			},
    54  			{
    55  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {224, 255}, {0, 255}},
    56  				outputRange: rangeBounds{{238, 239}, {128, 191}, {128, 191}},
    57  				inputMults:  []int{8192, 8192, 256, 1},
    58  				outputMults: []int{4096, 64, 1},
    59  			},
    60  			{
    61  				inputRange:  rangeBounds{{0, 0}, {1, 3}, {0, 255}, {0, 255}},
    62  				outputRange: rangeBounds{{240, 240}, {144, 191}, {128, 191}, {128, 191}},
    63  				inputMults:  []int{196608, 65536, 256, 1},
    64  				outputMults: []int{196608, 4096, 64, 1},
    65  			},
    66  			{
    67  				inputRange:  rangeBounds{{0, 0}, {4, 16}, {0, 255}, {0, 255}},
    68  				outputRange: rangeBounds{{241, 244}, {128, 191}, {128, 191}, {128, 191}},
    69  				inputMults:  []int{851968, 65536, 256, 1},
    70  				outputMults: []int{262144, 4096, 64, 1},
    71  			},
    72  		},
    73  	},
    74  	outputEntries: [][]rangeMapEntry{
    75  		{
    76  			{
    77  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {0, 0}, {0, 127}},
    78  				outputRange: rangeBounds{{0, 127}},
    79  				inputMults:  []int{128, 128, 128, 1},
    80  				outputMults: []int{1},
    81  			},
    82  		},
    83  		{
    84  			{
    85  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {0, 0}, {128, 255}},
    86  				outputRange: rangeBounds{{194, 195}, {128, 191}},
    87  				inputMults:  []int{128, 128, 128, 1},
    88  				outputMults: []int{64, 1},
    89  			},
    90  			{
    91  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {1, 7}, {0, 255}},
    92  				outputRange: rangeBounds{{196, 223}, {128, 191}},
    93  				inputMults:  []int{1792, 1792, 256, 1},
    94  				outputMults: []int{64, 1},
    95  			},
    96  		},
    97  		{
    98  			{
    99  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {8, 15}, {0, 255}},
   100  				outputRange: rangeBounds{{224, 224}, {160, 191}, {128, 191}},
   101  				inputMults:  []int{2048, 2048, 256, 1},
   102  				outputMults: []int{2048, 64, 1},
   103  			},
   104  			{
   105  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {16, 215}, {0, 255}},
   106  				outputRange: rangeBounds{{225, 237}, {128, 191}, {128, 191}},
   107  				inputMults:  []int{51200, 51200, 256, 1},
   108  				outputMults: []int{4096, 64, 1},
   109  			},
   110  			{
   111  				inputRange:  rangeBounds{{0, 0}, {0, 0}, {224, 255}, {0, 255}},
   112  				outputRange: rangeBounds{{238, 239}, {128, 191}, {128, 191}},
   113  				inputMults:  []int{8192, 8192, 256, 1},
   114  				outputMults: []int{4096, 64, 1},
   115  			},
   116  		},
   117  		{
   118  			{
   119  				inputRange:  rangeBounds{{0, 0}, {1, 3}, {0, 255}, {0, 255}},
   120  				outputRange: rangeBounds{{240, 240}, {144, 191}, {128, 191}, {128, 191}},
   121  				inputMults:  []int{196608, 65536, 256, 1},
   122  				outputMults: []int{196608, 4096, 64, 1},
   123  			},
   124  			{
   125  				inputRange:  rangeBounds{{0, 0}, {4, 16}, {0, 255}, {0, 255}},
   126  				outputRange: rangeBounds{{241, 244}, {128, 191}, {128, 191}, {128, 191}},
   127  				inputMults:  []int{851968, 65536, 256, 1},
   128  				outputMults: []int{262144, 4096, 64, 1},
   129  			},
   130  		},
   131  	},
   132  	toUpper: map[rune]rune{
   133  		97:    65,
   134  		98:    66,
   135  		99:    67,
   136  		100:   68,
   137  		101:   69,
   138  		102:   70,
   139  		103:   71,
   140  		104:   72,
   141  		105:   73,
   142  		106:   74,
   143  		107:   75,
   144  		108:   76,
   145  		109:   77,
   146  		110:   78,
   147  		111:   79,
   148  		112:   80,
   149  		113:   81,
   150  		114:   82,
   151  		115:   83,
   152  		116:   84,
   153  		117:   85,
   154  		118:   86,
   155  		119:   87,
   156  		120:   88,
   157  		121:   89,
   158  		122:   90,
   159  		181:   924,
   160  		224:   192,
   161  		225:   193,
   162  		226:   194,
   163  		227:   195,
   164  		228:   196,
   165  		229:   197,
   166  		230:   198,
   167  		231:   199,
   168  		232:   200,
   169  		233:   201,
   170  		234:   202,
   171  		235:   203,
   172  		236:   204,
   173  		237:   205,
   174  		238:   206,
   175  		239:   207,
   176  		240:   208,
   177  		241:   209,
   178  		242:   210,
   179  		243:   211,
   180  		244:   212,
   181  		245:   213,
   182  		246:   214,
   183  		248:   216,
   184  		249:   217,
   185  		250:   218,
   186  		251:   219,
   187  		252:   220,
   188  		253:   221,
   189  		254:   222,
   190  		255:   376,
   191  		257:   256,
   192  		259:   258,
   193  		261:   260,
   194  		263:   262,
   195  		265:   264,
   196  		267:   266,
   197  		269:   268,
   198  		271:   270,
   199  		273:   272,
   200  		275:   274,
   201  		277:   276,
   202  		279:   278,
   203  		281:   280,
   204  		283:   282,
   205  		285:   284,
   206  		287:   286,
   207  		289:   288,
   208  		291:   290,
   209  		293:   292,
   210  		295:   294,
   211  		297:   296,
   212  		299:   298,
   213  		301:   300,
   214  		303:   302,
   215  		305:   73,
   216  		307:   306,
   217  		309:   308,
   218  		311:   310,
   219  		314:   313,
   220  		316:   315,
   221  		318:   317,
   222  		320:   319,
   223  		322:   321,
   224  		324:   323,
   225  		326:   325,
   226  		328:   327,
   227  		331:   330,
   228  		333:   332,
   229  		335:   334,
   230  		337:   336,
   231  		339:   338,
   232  		341:   340,
   233  		343:   342,
   234  		345:   344,
   235  		347:   346,
   236  		349:   348,
   237  		351:   350,
   238  		353:   352,
   239  		355:   354,
   240  		357:   356,
   241  		359:   358,
   242  		361:   360,
   243  		363:   362,
   244  		365:   364,
   245  		367:   366,
   246  		369:   368,
   247  		371:   370,
   248  		373:   372,
   249  		375:   374,
   250  		378:   377,
   251  		380:   379,
   252  		382:   381,
   253  		383:   83,
   254  		387:   386,
   255  		389:   388,
   256  		392:   391,
   257  		396:   395,
   258  		402:   401,
   259  		405:   502,
   260  		409:   408,
   261  		417:   416,
   262  		419:   418,
   263  		421:   420,
   264  		424:   423,
   265  		429:   428,
   266  		432:   431,
   267  		436:   435,
   268  		438:   437,
   269  		441:   440,
   270  		445:   444,
   271  		447:   503,
   272  		453:   452,
   273  		454:   452,
   274  		456:   455,
   275  		457:   455,
   276  		459:   458,
   277  		460:   458,
   278  		462:   461,
   279  		464:   463,
   280  		466:   465,
   281  		468:   467,
   282  		470:   469,
   283  		472:   471,
   284  		474:   473,
   285  		476:   475,
   286  		477:   398,
   287  		479:   478,
   288  		481:   480,
   289  		483:   482,
   290  		485:   484,
   291  		487:   486,
   292  		489:   488,
   293  		491:   490,
   294  		493:   492,
   295  		495:   494,
   296  		498:   497,
   297  		499:   497,
   298  		501:   500,
   299  		505:   504,
   300  		507:   506,
   301  		509:   508,
   302  		511:   510,
   303  		513:   512,
   304  		515:   514,
   305  		517:   516,
   306  		519:   518,
   307  		521:   520,
   308  		523:   522,
   309  		525:   524,
   310  		527:   526,
   311  		529:   528,
   312  		531:   530,
   313  		533:   532,
   314  		535:   534,
   315  		537:   536,
   316  		539:   538,
   317  		541:   540,
   318  		543:   542,
   319  		547:   546,
   320  		549:   548,
   321  		551:   550,
   322  		553:   552,
   323  		555:   554,
   324  		557:   556,
   325  		559:   558,
   326  		561:   560,
   327  		563:   562,
   328  		595:   385,
   329  		596:   390,
   330  		598:   393,
   331  		599:   394,
   332  		601:   399,
   333  		603:   400,
   334  		608:   403,
   335  		611:   404,
   336  		616:   407,
   337  		617:   406,
   338  		623:   412,
   339  		626:   413,
   340  		629:   415,
   341  		640:   422,
   342  		643:   425,
   343  		648:   430,
   344  		650:   433,
   345  		651:   434,
   346  		658:   439,
   347  		837:   921,
   348  		940:   902,
   349  		941:   904,
   350  		942:   905,
   351  		943:   906,
   352  		945:   913,
   353  		946:   914,
   354  		947:   915,
   355  		948:   916,
   356  		949:   917,
   357  		950:   918,
   358  		951:   919,
   359  		952:   920,
   360  		953:   921,
   361  		954:   922,
   362  		955:   923,
   363  		956:   924,
   364  		957:   925,
   365  		958:   926,
   366  		959:   927,
   367  		960:   928,
   368  		961:   929,
   369  		962:   931,
   370  		963:   931,
   371  		964:   932,
   372  		965:   933,
   373  		966:   934,
   374  		967:   935,
   375  		968:   936,
   376  		969:   937,
   377  		970:   938,
   378  		971:   939,
   379  		972:   908,
   380  		973:   910,
   381  		974:   911,
   382  		976:   914,
   383  		977:   920,
   384  		981:   934,
   385  		982:   928,
   386  		987:   986,
   387  		989:   988,
   388  		991:   990,
   389  		993:   992,
   390  		995:   994,
   391  		997:   996,
   392  		999:   998,
   393  		1001:  1000,
   394  		1003:  1002,
   395  		1005:  1004,
   396  		1007:  1006,
   397  		1008:  922,
   398  		1009:  929,
   399  		1010:  931,
   400  		1072:  1040,
   401  		1073:  1041,
   402  		1074:  1042,
   403  		1075:  1043,
   404  		1076:  1044,
   405  		1077:  1045,
   406  		1078:  1046,
   407  		1079:  1047,
   408  		1080:  1048,
   409  		1081:  1049,
   410  		1082:  1050,
   411  		1083:  1051,
   412  		1084:  1052,
   413  		1085:  1053,
   414  		1086:  1054,
   415  		1087:  1055,
   416  		1088:  1056,
   417  		1089:  1057,
   418  		1090:  1058,
   419  		1091:  1059,
   420  		1092:  1060,
   421  		1093:  1061,
   422  		1094:  1062,
   423  		1095:  1063,
   424  		1096:  1064,
   425  		1097:  1065,
   426  		1098:  1066,
   427  		1099:  1067,
   428  		1100:  1068,
   429  		1101:  1069,
   430  		1102:  1070,
   431  		1103:  1071,
   432  		1104:  1024,
   433  		1105:  1025,
   434  		1106:  1026,
   435  		1107:  1027,
   436  		1108:  1028,
   437  		1109:  1029,
   438  		1110:  1030,
   439  		1111:  1031,
   440  		1112:  1032,
   441  		1113:  1033,
   442  		1114:  1034,
   443  		1115:  1035,
   444  		1116:  1036,
   445  		1117:  1037,
   446  		1118:  1038,
   447  		1119:  1039,
   448  		1121:  1120,
   449  		1123:  1122,
   450  		1125:  1124,
   451  		1127:  1126,
   452  		1129:  1128,
   453  		1131:  1130,
   454  		1133:  1132,
   455  		1135:  1134,
   456  		1137:  1136,
   457  		1139:  1138,
   458  		1141:  1140,
   459  		1143:  1142,
   460  		1145:  1144,
   461  		1147:  1146,
   462  		1149:  1148,
   463  		1151:  1150,
   464  		1153:  1152,
   465  		1165:  1164,
   466  		1167:  1166,
   467  		1169:  1168,
   468  		1171:  1170,
   469  		1173:  1172,
   470  		1175:  1174,
   471  		1177:  1176,
   472  		1179:  1178,
   473  		1181:  1180,
   474  		1183:  1182,
   475  		1185:  1184,
   476  		1187:  1186,
   477  		1189:  1188,
   478  		1191:  1190,
   479  		1193:  1192,
   480  		1195:  1194,
   481  		1197:  1196,
   482  		1199:  1198,
   483  		1201:  1200,
   484  		1203:  1202,
   485  		1205:  1204,
   486  		1207:  1206,
   487  		1209:  1208,
   488  		1211:  1210,
   489  		1213:  1212,
   490  		1215:  1214,
   491  		1218:  1217,
   492  		1220:  1219,
   493  		1224:  1223,
   494  		1228:  1227,
   495  		1233:  1232,
   496  		1235:  1234,
   497  		1237:  1236,
   498  		1239:  1238,
   499  		1241:  1240,
   500  		1243:  1242,
   501  		1245:  1244,
   502  		1247:  1246,
   503  		1249:  1248,
   504  		1251:  1250,
   505  		1253:  1252,
   506  		1255:  1254,
   507  		1257:  1256,
   508  		1259:  1258,
   509  		1261:  1260,
   510  		1263:  1262,
   511  		1265:  1264,
   512  		1267:  1266,
   513  		1269:  1268,
   514  		1273:  1272,
   515  		1377:  1329,
   516  		1378:  1330,
   517  		1379:  1331,
   518  		1380:  1332,
   519  		1381:  1333,
   520  		1382:  1334,
   521  		1383:  1335,
   522  		1384:  1336,
   523  		1385:  1337,
   524  		1386:  1338,
   525  		1387:  1339,
   526  		1388:  1340,
   527  		1389:  1341,
   528  		1390:  1342,
   529  		1391:  1343,
   530  		1392:  1344,
   531  		1393:  1345,
   532  		1394:  1346,
   533  		1395:  1347,
   534  		1396:  1348,
   535  		1397:  1349,
   536  		1398:  1350,
   537  		1399:  1351,
   538  		1400:  1352,
   539  		1401:  1353,
   540  		1402:  1354,
   541  		1403:  1355,
   542  		1404:  1356,
   543  		1405:  1357,
   544  		1406:  1358,
   545  		1407:  1359,
   546  		1408:  1360,
   547  		1409:  1361,
   548  		1410:  1362,
   549  		1411:  1363,
   550  		1412:  1364,
   551  		1413:  1365,
   552  		1414:  1366,
   553  		7681:  7680,
   554  		7683:  7682,
   555  		7685:  7684,
   556  		7687:  7686,
   557  		7689:  7688,
   558  		7691:  7690,
   559  		7693:  7692,
   560  		7695:  7694,
   561  		7697:  7696,
   562  		7699:  7698,
   563  		7701:  7700,
   564  		7703:  7702,
   565  		7705:  7704,
   566  		7707:  7706,
   567  		7709:  7708,
   568  		7711:  7710,
   569  		7713:  7712,
   570  		7715:  7714,
   571  		7717:  7716,
   572  		7719:  7718,
   573  		7721:  7720,
   574  		7723:  7722,
   575  		7725:  7724,
   576  		7727:  7726,
   577  		7729:  7728,
   578  		7731:  7730,
   579  		7733:  7732,
   580  		7735:  7734,
   581  		7737:  7736,
   582  		7739:  7738,
   583  		7741:  7740,
   584  		7743:  7742,
   585  		7745:  7744,
   586  		7747:  7746,
   587  		7749:  7748,
   588  		7751:  7750,
   589  		7753:  7752,
   590  		7755:  7754,
   591  		7757:  7756,
   592  		7759:  7758,
   593  		7761:  7760,
   594  		7763:  7762,
   595  		7765:  7764,
   596  		7767:  7766,
   597  		7769:  7768,
   598  		7771:  7770,
   599  		7773:  7772,
   600  		7775:  7774,
   601  		7777:  7776,
   602  		7779:  7778,
   603  		7781:  7780,
   604  		7783:  7782,
   605  		7785:  7784,
   606  		7787:  7786,
   607  		7789:  7788,
   608  		7791:  7790,
   609  		7793:  7792,
   610  		7795:  7794,
   611  		7797:  7796,
   612  		7799:  7798,
   613  		7801:  7800,
   614  		7803:  7802,
   615  		7805:  7804,
   616  		7807:  7806,
   617  		7809:  7808,
   618  		7811:  7810,
   619  		7813:  7812,
   620  		7815:  7814,
   621  		7817:  7816,
   622  		7819:  7818,
   623  		7821:  7820,
   624  		7823:  7822,
   625  		7825:  7824,
   626  		7827:  7826,
   627  		7829:  7828,
   628  		7835:  7776,
   629  		7841:  7840,
   630  		7843:  7842,
   631  		7845:  7844,
   632  		7847:  7846,
   633  		7849:  7848,
   634  		7851:  7850,
   635  		7853:  7852,
   636  		7855:  7854,
   637  		7857:  7856,
   638  		7859:  7858,
   639  		7861:  7860,
   640  		7863:  7862,
   641  		7865:  7864,
   642  		7867:  7866,
   643  		7869:  7868,
   644  		7871:  7870,
   645  		7873:  7872,
   646  		7875:  7874,
   647  		7877:  7876,
   648  		7879:  7878,
   649  		7881:  7880,
   650  		7883:  7882,
   651  		7885:  7884,
   652  		7887:  7886,
   653  		7889:  7888,
   654  		7891:  7890,
   655  		7893:  7892,
   656  		7895:  7894,
   657  		7897:  7896,
   658  		7899:  7898,
   659  		7901:  7900,
   660  		7903:  7902,
   661  		7905:  7904,
   662  		7907:  7906,
   663  		7909:  7908,
   664  		7911:  7910,
   665  		7913:  7912,
   666  		7915:  7914,
   667  		7917:  7916,
   668  		7919:  7918,
   669  		7921:  7920,
   670  		7923:  7922,
   671  		7925:  7924,
   672  		7927:  7926,
   673  		7929:  7928,
   674  		7936:  7944,
   675  		7937:  7945,
   676  		7938:  7946,
   677  		7939:  7947,
   678  		7940:  7948,
   679  		7941:  7949,
   680  		7942:  7950,
   681  		7943:  7951,
   682  		7952:  7960,
   683  		7953:  7961,
   684  		7954:  7962,
   685  		7955:  7963,
   686  		7956:  7964,
   687  		7957:  7965,
   688  		7968:  7976,
   689  		7969:  7977,
   690  		7970:  7978,
   691  		7971:  7979,
   692  		7972:  7980,
   693  		7973:  7981,
   694  		7974:  7982,
   695  		7975:  7983,
   696  		7984:  7992,
   697  		7985:  7993,
   698  		7986:  7994,
   699  		7987:  7995,
   700  		7988:  7996,
   701  		7989:  7997,
   702  		7990:  7998,
   703  		7991:  7999,
   704  		8000:  8008,
   705  		8001:  8009,
   706  		8002:  8010,
   707  		8003:  8011,
   708  		8004:  8012,
   709  		8005:  8013,
   710  		8017:  8025,
   711  		8019:  8027,
   712  		8021:  8029,
   713  		8023:  8031,
   714  		8032:  8040,
   715  		8033:  8041,
   716  		8034:  8042,
   717  		8035:  8043,
   718  		8036:  8044,
   719  		8037:  8045,
   720  		8038:  8046,
   721  		8039:  8047,
   722  		8048:  8122,
   723  		8049:  8123,
   724  		8050:  8136,
   725  		8051:  8137,
   726  		8052:  8138,
   727  		8053:  8139,
   728  		8054:  8154,
   729  		8055:  8155,
   730  		8056:  8184,
   731  		8057:  8185,
   732  		8058:  8170,
   733  		8059:  8171,
   734  		8060:  8186,
   735  		8061:  8187,
   736  		8064:  8072,
   737  		8065:  8073,
   738  		8066:  8074,
   739  		8067:  8075,
   740  		8068:  8076,
   741  		8069:  8077,
   742  		8070:  8078,
   743  		8071:  8079,
   744  		8080:  8088,
   745  		8081:  8089,
   746  		8082:  8090,
   747  		8083:  8091,
   748  		8084:  8092,
   749  		8085:  8093,
   750  		8086:  8094,
   751  		8087:  8095,
   752  		8096:  8104,
   753  		8097:  8105,
   754  		8098:  8106,
   755  		8099:  8107,
   756  		8100:  8108,
   757  		8101:  8109,
   758  		8102:  8110,
   759  		8103:  8111,
   760  		8112:  8120,
   761  		8113:  8121,
   762  		8115:  8124,
   763  		8126:  921,
   764  		8131:  8140,
   765  		8144:  8152,
   766  		8145:  8153,
   767  		8160:  8168,
   768  		8161:  8169,
   769  		8165:  8172,
   770  		8179:  8188,
   771  		8560:  8544,
   772  		8561:  8545,
   773  		8562:  8546,
   774  		8563:  8547,
   775  		8564:  8548,
   776  		8565:  8549,
   777  		8566:  8550,
   778  		8567:  8551,
   779  		8568:  8552,
   780  		8569:  8553,
   781  		8570:  8554,
   782  		8571:  8555,
   783  		8572:  8556,
   784  		8573:  8557,
   785  		8574:  8558,
   786  		8575:  8559,
   787  		9424:  9398,
   788  		9425:  9399,
   789  		9426:  9400,
   790  		9427:  9401,
   791  		9428:  9402,
   792  		9429:  9403,
   793  		9430:  9404,
   794  		9431:  9405,
   795  		9432:  9406,
   796  		9433:  9407,
   797  		9434:  9408,
   798  		9435:  9409,
   799  		9436:  9410,
   800  		9437:  9411,
   801  		9438:  9412,
   802  		9439:  9413,
   803  		9440:  9414,
   804  		9441:  9415,
   805  		9442:  9416,
   806  		9443:  9417,
   807  		9444:  9418,
   808  		9445:  9419,
   809  		9446:  9420,
   810  		9447:  9421,
   811  		9448:  9422,
   812  		9449:  9423,
   813  		65345: 65313,
   814  		65346: 65314,
   815  		65347: 65315,
   816  		65348: 65316,
   817  		65349: 65317,
   818  		65350: 65318,
   819  		65351: 65319,
   820  		65352: 65320,
   821  		65353: 65321,
   822  		65354: 65322,
   823  		65355: 65323,
   824  		65356: 65324,
   825  		65357: 65325,
   826  		65358: 65326,
   827  		65359: 65327,
   828  		65360: 65328,
   829  		65361: 65329,
   830  		65362: 65330,
   831  		65363: 65331,
   832  		65364: 65332,
   833  		65365: 65333,
   834  		65366: 65334,
   835  		65367: 65335,
   836  		65368: 65336,
   837  		65369: 65337,
   838  		65370: 65338,
   839  	},
   840  	toLower: map[rune]rune{
   841  		65:    97,
   842  		66:    98,
   843  		67:    99,
   844  		68:    100,
   845  		69:    101,
   846  		70:    102,
   847  		71:    103,
   848  		72:    104,
   849  		73:    105,
   850  		74:    106,
   851  		75:    107,
   852  		76:    108,
   853  		77:    109,
   854  		78:    110,
   855  		79:    111,
   856  		80:    112,
   857  		81:    113,
   858  		82:    114,
   859  		83:    115,
   860  		84:    116,
   861  		85:    117,
   862  		86:    118,
   863  		87:    119,
   864  		88:    120,
   865  		89:    121,
   866  		90:    122,
   867  		192:   224,
   868  		193:   225,
   869  		194:   226,
   870  		195:   227,
   871  		196:   228,
   872  		197:   229,
   873  		198:   230,
   874  		199:   231,
   875  		200:   232,
   876  		201:   233,
   877  		202:   234,
   878  		203:   235,
   879  		204:   236,
   880  		205:   237,
   881  		206:   238,
   882  		207:   239,
   883  		208:   240,
   884  		209:   241,
   885  		210:   242,
   886  		211:   243,
   887  		212:   244,
   888  		213:   245,
   889  		214:   246,
   890  		216:   248,
   891  		217:   249,
   892  		218:   250,
   893  		219:   251,
   894  		220:   252,
   895  		221:   253,
   896  		222:   254,
   897  		256:   257,
   898  		258:   259,
   899  		260:   261,
   900  		262:   263,
   901  		264:   265,
   902  		266:   267,
   903  		268:   269,
   904  		270:   271,
   905  		272:   273,
   906  		274:   275,
   907  		276:   277,
   908  		278:   279,
   909  		280:   281,
   910  		282:   283,
   911  		284:   285,
   912  		286:   287,
   913  		288:   289,
   914  		290:   291,
   915  		292:   293,
   916  		294:   295,
   917  		296:   297,
   918  		298:   299,
   919  		300:   301,
   920  		302:   303,
   921  		304:   105,
   922  		306:   307,
   923  		308:   309,
   924  		310:   311,
   925  		313:   314,
   926  		315:   316,
   927  		317:   318,
   928  		319:   320,
   929  		321:   322,
   930  		323:   324,
   931  		325:   326,
   932  		327:   328,
   933  		330:   331,
   934  		332:   333,
   935  		334:   335,
   936  		336:   337,
   937  		338:   339,
   938  		340:   341,
   939  		342:   343,
   940  		344:   345,
   941  		346:   347,
   942  		348:   349,
   943  		350:   351,
   944  		352:   353,
   945  		354:   355,
   946  		356:   357,
   947  		358:   359,
   948  		360:   361,
   949  		362:   363,
   950  		364:   365,
   951  		366:   367,
   952  		368:   369,
   953  		370:   371,
   954  		372:   373,
   955  		374:   375,
   956  		376:   255,
   957  		377:   378,
   958  		379:   380,
   959  		381:   382,
   960  		385:   595,
   961  		386:   387,
   962  		388:   389,
   963  		390:   596,
   964  		391:   392,
   965  		393:   598,
   966  		394:   599,
   967  		395:   396,
   968  		398:   477,
   969  		399:   601,
   970  		400:   603,
   971  		401:   402,
   972  		403:   608,
   973  		404:   611,
   974  		406:   617,
   975  		407:   616,
   976  		408:   409,
   977  		412:   623,
   978  		413:   626,
   979  		415:   629,
   980  		416:   417,
   981  		418:   419,
   982  		420:   421,
   983  		422:   640,
   984  		423:   424,
   985  		425:   643,
   986  		428:   429,
   987  		430:   648,
   988  		431:   432,
   989  		433:   650,
   990  		434:   651,
   991  		435:   436,
   992  		437:   438,
   993  		439:   658,
   994  		440:   441,
   995  		444:   445,
   996  		452:   454,
   997  		453:   454,
   998  		455:   457,
   999  		456:   457,
  1000  		458:   460,
  1001  		459:   460,
  1002  		461:   462,
  1003  		463:   464,
  1004  		465:   466,
  1005  		467:   468,
  1006  		469:   470,
  1007  		471:   472,
  1008  		473:   474,
  1009  		475:   476,
  1010  		478:   479,
  1011  		480:   481,
  1012  		482:   483,
  1013  		484:   485,
  1014  		486:   487,
  1015  		488:   489,
  1016  		490:   491,
  1017  		492:   493,
  1018  		494:   495,
  1019  		497:   499,
  1020  		498:   499,
  1021  		500:   501,
  1022  		502:   405,
  1023  		503:   447,
  1024  		504:   505,
  1025  		506:   507,
  1026  		508:   509,
  1027  		510:   511,
  1028  		512:   513,
  1029  		514:   515,
  1030  		516:   517,
  1031  		518:   519,
  1032  		520:   521,
  1033  		522:   523,
  1034  		524:   525,
  1035  		526:   527,
  1036  		528:   529,
  1037  		530:   531,
  1038  		532:   533,
  1039  		534:   535,
  1040  		536:   537,
  1041  		538:   539,
  1042  		540:   541,
  1043  		542:   543,
  1044  		546:   547,
  1045  		548:   549,
  1046  		550:   551,
  1047  		552:   553,
  1048  		554:   555,
  1049  		556:   557,
  1050  		558:   559,
  1051  		560:   561,
  1052  		562:   563,
  1053  		902:   940,
  1054  		904:   941,
  1055  		905:   942,
  1056  		906:   943,
  1057  		908:   972,
  1058  		910:   973,
  1059  		911:   974,
  1060  		913:   945,
  1061  		914:   946,
  1062  		915:   947,
  1063  		916:   948,
  1064  		917:   949,
  1065  		918:   950,
  1066  		919:   951,
  1067  		920:   952,
  1068  		921:   953,
  1069  		922:   954,
  1070  		923:   955,
  1071  		924:   956,
  1072  		925:   957,
  1073  		926:   958,
  1074  		927:   959,
  1075  		928:   960,
  1076  		929:   961,
  1077  		931:   963,
  1078  		932:   964,
  1079  		933:   965,
  1080  		934:   966,
  1081  		935:   967,
  1082  		936:   968,
  1083  		937:   969,
  1084  		938:   970,
  1085  		939:   971,
  1086  		986:   987,
  1087  		988:   989,
  1088  		990:   991,
  1089  		992:   993,
  1090  		994:   995,
  1091  		996:   997,
  1092  		998:   999,
  1093  		1000:  1001,
  1094  		1002:  1003,
  1095  		1004:  1005,
  1096  		1006:  1007,
  1097  		1024:  1104,
  1098  		1025:  1105,
  1099  		1026:  1106,
  1100  		1027:  1107,
  1101  		1028:  1108,
  1102  		1029:  1109,
  1103  		1030:  1110,
  1104  		1031:  1111,
  1105  		1032:  1112,
  1106  		1033:  1113,
  1107  		1034:  1114,
  1108  		1035:  1115,
  1109  		1036:  1116,
  1110  		1037:  1117,
  1111  		1038:  1118,
  1112  		1039:  1119,
  1113  		1040:  1072,
  1114  		1041:  1073,
  1115  		1042:  1074,
  1116  		1043:  1075,
  1117  		1044:  1076,
  1118  		1045:  1077,
  1119  		1046:  1078,
  1120  		1047:  1079,
  1121  		1048:  1080,
  1122  		1049:  1081,
  1123  		1050:  1082,
  1124  		1051:  1083,
  1125  		1052:  1084,
  1126  		1053:  1085,
  1127  		1054:  1086,
  1128  		1055:  1087,
  1129  		1056:  1088,
  1130  		1057:  1089,
  1131  		1058:  1090,
  1132  		1059:  1091,
  1133  		1060:  1092,
  1134  		1061:  1093,
  1135  		1062:  1094,
  1136  		1063:  1095,
  1137  		1064:  1096,
  1138  		1065:  1097,
  1139  		1066:  1098,
  1140  		1067:  1099,
  1141  		1068:  1100,
  1142  		1069:  1101,
  1143  		1070:  1102,
  1144  		1071:  1103,
  1145  		1120:  1121,
  1146  		1122:  1123,
  1147  		1124:  1125,
  1148  		1126:  1127,
  1149  		1128:  1129,
  1150  		1130:  1131,
  1151  		1132:  1133,
  1152  		1134:  1135,
  1153  		1136:  1137,
  1154  		1138:  1139,
  1155  		1140:  1141,
  1156  		1142:  1143,
  1157  		1144:  1145,
  1158  		1146:  1147,
  1159  		1148:  1149,
  1160  		1150:  1151,
  1161  		1152:  1153,
  1162  		1164:  1165,
  1163  		1166:  1167,
  1164  		1168:  1169,
  1165  		1170:  1171,
  1166  		1172:  1173,
  1167  		1174:  1175,
  1168  		1176:  1177,
  1169  		1178:  1179,
  1170  		1180:  1181,
  1171  		1182:  1183,
  1172  		1184:  1185,
  1173  		1186:  1187,
  1174  		1188:  1189,
  1175  		1190:  1191,
  1176  		1192:  1193,
  1177  		1194:  1195,
  1178  		1196:  1197,
  1179  		1198:  1199,
  1180  		1200:  1201,
  1181  		1202:  1203,
  1182  		1204:  1205,
  1183  		1206:  1207,
  1184  		1208:  1209,
  1185  		1210:  1211,
  1186  		1212:  1213,
  1187  		1214:  1215,
  1188  		1217:  1218,
  1189  		1219:  1220,
  1190  		1223:  1224,
  1191  		1227:  1228,
  1192  		1232:  1233,
  1193  		1234:  1235,
  1194  		1236:  1237,
  1195  		1238:  1239,
  1196  		1240:  1241,
  1197  		1242:  1243,
  1198  		1244:  1245,
  1199  		1246:  1247,
  1200  		1248:  1249,
  1201  		1250:  1251,
  1202  		1252:  1253,
  1203  		1254:  1255,
  1204  		1256:  1257,
  1205  		1258:  1259,
  1206  		1260:  1261,
  1207  		1262:  1263,
  1208  		1264:  1265,
  1209  		1266:  1267,
  1210  		1268:  1269,
  1211  		1272:  1273,
  1212  		1329:  1377,
  1213  		1330:  1378,
  1214  		1331:  1379,
  1215  		1332:  1380,
  1216  		1333:  1381,
  1217  		1334:  1382,
  1218  		1335:  1383,
  1219  		1336:  1384,
  1220  		1337:  1385,
  1221  		1338:  1386,
  1222  		1339:  1387,
  1223  		1340:  1388,
  1224  		1341:  1389,
  1225  		1342:  1390,
  1226  		1343:  1391,
  1227  		1344:  1392,
  1228  		1345:  1393,
  1229  		1346:  1394,
  1230  		1347:  1395,
  1231  		1348:  1396,
  1232  		1349:  1397,
  1233  		1350:  1398,
  1234  		1351:  1399,
  1235  		1352:  1400,
  1236  		1353:  1401,
  1237  		1354:  1402,
  1238  		1355:  1403,
  1239  		1356:  1404,
  1240  		1357:  1405,
  1241  		1358:  1406,
  1242  		1359:  1407,
  1243  		1360:  1408,
  1244  		1361:  1409,
  1245  		1362:  1410,
  1246  		1363:  1411,
  1247  		1364:  1412,
  1248  		1365:  1413,
  1249  		1366:  1414,
  1250  		7680:  7681,
  1251  		7682:  7683,
  1252  		7684:  7685,
  1253  		7686:  7687,
  1254  		7688:  7689,
  1255  		7690:  7691,
  1256  		7692:  7693,
  1257  		7694:  7695,
  1258  		7696:  7697,
  1259  		7698:  7699,
  1260  		7700:  7701,
  1261  		7702:  7703,
  1262  		7704:  7705,
  1263  		7706:  7707,
  1264  		7708:  7709,
  1265  		7710:  7711,
  1266  		7712:  7713,
  1267  		7714:  7715,
  1268  		7716:  7717,
  1269  		7718:  7719,
  1270  		7720:  7721,
  1271  		7722:  7723,
  1272  		7724:  7725,
  1273  		7726:  7727,
  1274  		7728:  7729,
  1275  		7730:  7731,
  1276  		7732:  7733,
  1277  		7734:  7735,
  1278  		7736:  7737,
  1279  		7738:  7739,
  1280  		7740:  7741,
  1281  		7742:  7743,
  1282  		7744:  7745,
  1283  		7746:  7747,
  1284  		7748:  7749,
  1285  		7750:  7751,
  1286  		7752:  7753,
  1287  		7754:  7755,
  1288  		7756:  7757,
  1289  		7758:  7759,
  1290  		7760:  7761,
  1291  		7762:  7763,
  1292  		7764:  7765,
  1293  		7766:  7767,
  1294  		7768:  7769,
  1295  		7770:  7771,
  1296  		7772:  7773,
  1297  		7774:  7775,
  1298  		7776:  7777,
  1299  		7778:  7779,
  1300  		7780:  7781,
  1301  		7782:  7783,
  1302  		7784:  7785,
  1303  		7786:  7787,
  1304  		7788:  7789,
  1305  		7790:  7791,
  1306  		7792:  7793,
  1307  		7794:  7795,
  1308  		7796:  7797,
  1309  		7798:  7799,
  1310  		7800:  7801,
  1311  		7802:  7803,
  1312  		7804:  7805,
  1313  		7806:  7807,
  1314  		7808:  7809,
  1315  		7810:  7811,
  1316  		7812:  7813,
  1317  		7814:  7815,
  1318  		7816:  7817,
  1319  		7818:  7819,
  1320  		7820:  7821,
  1321  		7822:  7823,
  1322  		7824:  7825,
  1323  		7826:  7827,
  1324  		7828:  7829,
  1325  		7840:  7841,
  1326  		7842:  7843,
  1327  		7844:  7845,
  1328  		7846:  7847,
  1329  		7848:  7849,
  1330  		7850:  7851,
  1331  		7852:  7853,
  1332  		7854:  7855,
  1333  		7856:  7857,
  1334  		7858:  7859,
  1335  		7860:  7861,
  1336  		7862:  7863,
  1337  		7864:  7865,
  1338  		7866:  7867,
  1339  		7868:  7869,
  1340  		7870:  7871,
  1341  		7872:  7873,
  1342  		7874:  7875,
  1343  		7876:  7877,
  1344  		7878:  7879,
  1345  		7880:  7881,
  1346  		7882:  7883,
  1347  		7884:  7885,
  1348  		7886:  7887,
  1349  		7888:  7889,
  1350  		7890:  7891,
  1351  		7892:  7893,
  1352  		7894:  7895,
  1353  		7896:  7897,
  1354  		7898:  7899,
  1355  		7900:  7901,
  1356  		7902:  7903,
  1357  		7904:  7905,
  1358  		7906:  7907,
  1359  		7908:  7909,
  1360  		7910:  7911,
  1361  		7912:  7913,
  1362  		7914:  7915,
  1363  		7916:  7917,
  1364  		7918:  7919,
  1365  		7920:  7921,
  1366  		7922:  7923,
  1367  		7924:  7925,
  1368  		7926:  7927,
  1369  		7928:  7929,
  1370  		7944:  7936,
  1371  		7945:  7937,
  1372  		7946:  7938,
  1373  		7947:  7939,
  1374  		7948:  7940,
  1375  		7949:  7941,
  1376  		7950:  7942,
  1377  		7951:  7943,
  1378  		7960:  7952,
  1379  		7961:  7953,
  1380  		7962:  7954,
  1381  		7963:  7955,
  1382  		7964:  7956,
  1383  		7965:  7957,
  1384  		7976:  7968,
  1385  		7977:  7969,
  1386  		7978:  7970,
  1387  		7979:  7971,
  1388  		7980:  7972,
  1389  		7981:  7973,
  1390  		7982:  7974,
  1391  		7983:  7975,
  1392  		7992:  7984,
  1393  		7993:  7985,
  1394  		7994:  7986,
  1395  		7995:  7987,
  1396  		7996:  7988,
  1397  		7997:  7989,
  1398  		7998:  7990,
  1399  		7999:  7991,
  1400  		8008:  8000,
  1401  		8009:  8001,
  1402  		8010:  8002,
  1403  		8011:  8003,
  1404  		8012:  8004,
  1405  		8013:  8005,
  1406  		8025:  8017,
  1407  		8027:  8019,
  1408  		8029:  8021,
  1409  		8031:  8023,
  1410  		8040:  8032,
  1411  		8041:  8033,
  1412  		8042:  8034,
  1413  		8043:  8035,
  1414  		8044:  8036,
  1415  		8045:  8037,
  1416  		8046:  8038,
  1417  		8047:  8039,
  1418  		8072:  8064,
  1419  		8073:  8065,
  1420  		8074:  8066,
  1421  		8075:  8067,
  1422  		8076:  8068,
  1423  		8077:  8069,
  1424  		8078:  8070,
  1425  		8079:  8071,
  1426  		8088:  8080,
  1427  		8089:  8081,
  1428  		8090:  8082,
  1429  		8091:  8083,
  1430  		8092:  8084,
  1431  		8093:  8085,
  1432  		8094:  8086,
  1433  		8095:  8087,
  1434  		8104:  8096,
  1435  		8105:  8097,
  1436  		8106:  8098,
  1437  		8107:  8099,
  1438  		8108:  8100,
  1439  		8109:  8101,
  1440  		8110:  8102,
  1441  		8111:  8103,
  1442  		8120:  8112,
  1443  		8121:  8113,
  1444  		8122:  8048,
  1445  		8123:  8049,
  1446  		8124:  8115,
  1447  		8136:  8050,
  1448  		8137:  8051,
  1449  		8138:  8052,
  1450  		8139:  8053,
  1451  		8140:  8131,
  1452  		8152:  8144,
  1453  		8153:  8145,
  1454  		8154:  8054,
  1455  		8155:  8055,
  1456  		8168:  8160,
  1457  		8169:  8161,
  1458  		8170:  8058,
  1459  		8171:  8059,
  1460  		8172:  8165,
  1461  		8184:  8056,
  1462  		8185:  8057,
  1463  		8186:  8060,
  1464  		8187:  8061,
  1465  		8188:  8179,
  1466  		8486:  969,
  1467  		8490:  107,
  1468  		8491:  229,
  1469  		8544:  8560,
  1470  		8545:  8561,
  1471  		8546:  8562,
  1472  		8547:  8563,
  1473  		8548:  8564,
  1474  		8549:  8565,
  1475  		8550:  8566,
  1476  		8551:  8567,
  1477  		8552:  8568,
  1478  		8553:  8569,
  1479  		8554:  8570,
  1480  		8555:  8571,
  1481  		8556:  8572,
  1482  		8557:  8573,
  1483  		8558:  8574,
  1484  		8559:  8575,
  1485  		9398:  9424,
  1486  		9399:  9425,
  1487  		9400:  9426,
  1488  		9401:  9427,
  1489  		9402:  9428,
  1490  		9403:  9429,
  1491  		9404:  9430,
  1492  		9405:  9431,
  1493  		9406:  9432,
  1494  		9407:  9433,
  1495  		9408:  9434,
  1496  		9409:  9435,
  1497  		9410:  9436,
  1498  		9411:  9437,
  1499  		9412:  9438,
  1500  		9413:  9439,
  1501  		9414:  9440,
  1502  		9415:  9441,
  1503  		9416:  9442,
  1504  		9417:  9443,
  1505  		9418:  9444,
  1506  		9419:  9445,
  1507  		9420:  9446,
  1508  		9421:  9447,
  1509  		9422:  9448,
  1510  		9423:  9449,
  1511  		65313: 65345,
  1512  		65314: 65346,
  1513  		65315: 65347,
  1514  		65316: 65348,
  1515  		65317: 65349,
  1516  		65318: 65350,
  1517  		65319: 65351,
  1518  		65320: 65352,
  1519  		65321: 65353,
  1520  		65322: 65354,
  1521  		65323: 65355,
  1522  		65324: 65356,
  1523  		65325: 65357,
  1524  		65326: 65358,
  1525  		65327: 65359,
  1526  		65328: 65360,
  1527  		65329: 65361,
  1528  		65330: 65362,
  1529  		65331: 65363,
  1530  		65332: 65364,
  1531  		65333: 65365,
  1532  		65334: 65366,
  1533  		65335: 65367,
  1534  		65336: 65368,
  1535  		65337: 65369,
  1536  		65338: 65370,
  1537  	},
  1538  }