summary refs log tree commit diff stats
path: root/lib/pure/includes/unicode_ranges.nim
diff options
context:
space:
mode:
authorMiran <narimiran@disroot.org>2019-03-31 08:36:04 +0200
committerAndreas Rumpf <rumpf_a@web.de>2019-03-31 08:36:04 +0200
commitaeb30a72c03771382a9b9781d06f4ec9bd81a088 (patch)
tree95bbf10aa9ddf860a57c386c1d0e33e63e141e94 /lib/pure/includes/unicode_ranges.nim
parentaa072b952555804e516861d9ed62846e341f7938 (diff)
downloadNim-aeb30a72c03771382a9b9781d06f4ec9bd81a088.tar.gz
update unicode.nim (#10921)
* update unicode.nim

* create a script to create the needed unicode data
* make unicode.nim compatible with Unicode v12.0.0
* slightly improve unicode.nim documentation (fixes #4795)

* more documentation
Diffstat (limited to 'lib/pure/includes/unicode_ranges.nim')
-rw-r--r--lib/pure/includes/unicode_ranges.nim2016
1 files changed, 2016 insertions, 0 deletions
diff --git a/lib/pure/includes/unicode_ranges.nim b/lib/pure/includes/unicode_ranges.nim
new file mode 100644
index 000000000..74c8c6399
--- /dev/null
+++ b/lib/pure/includes/unicode_ranges.nim
@@ -0,0 +1,2016 @@
+# This file was created from a script.
+
+const
+  toLowerRanges = [
+    0x00041, 0x0005A, 532,
+    0x000C0, 0x000D6, 532,
+    0x000D8, 0x000DE, 532,
+    0x00189, 0x0018A, 705,
+    0x001B1, 0x001B2, 717,
+    0x00388, 0x0038A, 537,
+    0x0038E, 0x0038F, 563,
+    0x00391, 0x003A1, 532,
+    0x003A3, 0x003AB, 532,
+    0x003FD, 0x003FF, 370,
+    0x00400, 0x0040F, 580,
+    0x00410, 0x0042F, 532,
+    0x00531, 0x00556, 548,
+    0x010A0, 0x010C5, 7764,
+    0x013A0, 0x013EF, 39364,
+    0x013F0, 0x013F5, 508,
+    0x01C90, 0x01CBA, -2508,
+    0x01CBD, 0x01CBF, -2508,
+    0x01F08, 0x01F0F, 492,
+    0x01F18, 0x01F1D, 492,
+    0x01F28, 0x01F2F, 492,
+    0x01F38, 0x01F3F, 492,
+    0x01F48, 0x01F4D, 492,
+    0x01F68, 0x01F6F, 492,
+    0x01F88, 0x01F8F, 492,
+    0x01F98, 0x01F9F, 492,
+    0x01FA8, 0x01FAF, 492,
+    0x01FB8, 0x01FB9, 492,
+    0x01FBA, 0x01FBB, 426,
+    0x01FC8, 0x01FCB, 414,
+    0x01FD8, 0x01FD9, 492,
+    0x01FDA, 0x01FDB, 400,
+    0x01FE8, 0x01FE9, 492,
+    0x01FEA, 0x01FEB, 388,
+    0x01FF8, 0x01FF9, 372,
+    0x01FFA, 0x01FFB, 374,
+    0x02C00, 0x02C2E, 548,
+    0x02C7E, 0x02C7F, -10315,
+    0x0FF21, 0x0FF3A, 532,
+    0x10400, 0x10427, 540,
+    0x104B0, 0x104D3, 540,
+    0x10C80, 0x10CB2, 564,
+    0x118A0, 0x118BF, 532,
+    0x16E40, 0x16E5F, 532,
+    0x1E900, 0x1E921, 534,
+  ]
+
+  toLowerSinglets = [
+    0x00100, 501,
+    0x00102, 501,
+    0x00104, 501,
+    0x00106, 501,
+    0x00108, 501,
+    0x0010A, 501,
+    0x0010C, 501,
+    0x0010E, 501,
+    0x00110, 501,
+    0x00112, 501,
+    0x00114, 501,
+    0x00116, 501,
+    0x00118, 501,
+    0x0011A, 501,
+    0x0011C, 501,
+    0x0011E, 501,
+    0x00120, 501,
+    0x00122, 501,
+    0x00124, 501,
+    0x00126, 501,
+    0x00128, 501,
+    0x0012A, 501,
+    0x0012C, 501,
+    0x0012E, 501,
+    0x00130, 301,
+    0x00132, 501,
+    0x00134, 501,
+    0x00136, 501,
+    0x00139, 501,
+    0x0013B, 501,
+    0x0013D, 501,
+    0x0013F, 501,
+    0x00141, 501,
+    0x00143, 501,
+    0x00145, 501,
+    0x00147, 501,
+    0x0014A, 501,
+    0x0014C, 501,
+    0x0014E, 501,
+    0x00150, 501,
+    0x00152, 501,
+    0x00154, 501,
+    0x00156, 501,
+    0x00158, 501,
+    0x0015A, 501,
+    0x0015C, 501,
+    0x0015E, 501,
+    0x00160, 501,
+    0x00162, 501,
+    0x00164, 501,
+    0x00166, 501,
+    0x00168, 501,
+    0x0016A, 501,
+    0x0016C, 501,
+    0x0016E, 501,
+    0x00170, 501,
+    0x00172, 501,
+    0x00174, 501,
+    0x00176, 501,
+    0x00178, 379,
+    0x00179, 501,
+    0x0017B, 501,
+    0x0017D, 501,
+    0x00181, 710,
+    0x00182, 501,
+    0x00184, 501,
+    0x00186, 706,
+    0x00187, 501,
+    0x0018B, 501,
+    0x0018E, 579,
+    0x0018F, 702,
+    0x00190, 703,
+    0x00191, 501,
+    0x00193, 705,
+    0x00194, 707,
+    0x00196, 711,
+    0x00197, 709,
+    0x00198, 501,
+    0x0019C, 711,
+    0x0019D, 713,
+    0x0019F, 714,
+    0x001A0, 501,
+    0x001A2, 501,
+    0x001A4, 501,
+    0x001A6, 718,
+    0x001A7, 501,
+    0x001A9, 718,
+    0x001AC, 501,
+    0x001AE, 718,
+    0x001AF, 501,
+    0x001B3, 501,
+    0x001B5, 501,
+    0x001B7, 719,
+    0x001B8, 501,
+    0x001BC, 501,
+    0x001C4, 502,
+    0x001C5, 501,
+    0x001C7, 502,
+    0x001C8, 501,
+    0x001CA, 502,
+    0x001CB, 501,
+    0x001CD, 501,
+    0x001CF, 501,
+    0x001D1, 501,
+    0x001D3, 501,
+    0x001D5, 501,
+    0x001D7, 501,
+    0x001D9, 501,
+    0x001DB, 501,
+    0x001DE, 501,
+    0x001E0, 501,
+    0x001E2, 501,
+    0x001E4, 501,
+    0x001E6, 501,
+    0x001E8, 501,
+    0x001EA, 501,
+    0x001EC, 501,
+    0x001EE, 501,
+    0x001F1, 502,
+    0x001F2, 501,
+    0x001F4, 501,
+    0x001F6, 403,
+    0x001F7, 444,
+    0x001F8, 501,
+    0x001FA, 501,
+    0x001FC, 501,
+    0x001FE, 501,
+    0x00200, 501,
+    0x00202, 501,
+    0x00204, 501,
+    0x00206, 501,
+    0x00208, 501,
+    0x0020A, 501,
+    0x0020C, 501,
+    0x0020E, 501,
+    0x00210, 501,
+    0x00212, 501,
+    0x00214, 501,
+    0x00216, 501,
+    0x00218, 501,
+    0x0021A, 501,
+    0x0021C, 501,
+    0x0021E, 501,
+    0x00220, 370,
+    0x00222, 501,
+    0x00224, 501,
+    0x00226, 501,
+    0x00228, 501,
+    0x0022A, 501,
+    0x0022C, 501,
+    0x0022E, 501,
+    0x00230, 501,
+    0x00232, 501,
+    0x0023A, 11295,
+    0x0023B, 501,
+    0x0023D, 337,
+    0x0023E, 11292,
+    0x00241, 501,
+    0x00243, 305,
+    0x00244, 569,
+    0x00245, 571,
+    0x00246, 501,
+    0x00248, 501,
+    0x0024A, 501,
+    0x0024C, 501,
+    0x0024E, 501,
+    0x00370, 501,
+    0x00372, 501,
+    0x00376, 501,
+    0x0037F, 616,
+    0x00386, 538,
+    0x0038C, 564,
+    0x003CF, 508,
+    0x003D8, 501,
+    0x003DA, 501,
+    0x003DC, 501,
+    0x003DE, 501,
+    0x003E0, 501,
+    0x003E2, 501,
+    0x003E4, 501,
+    0x003E6, 501,
+    0x003E8, 501,
+    0x003EA, 501,
+    0x003EC, 501,
+    0x003EE, 501,
+    0x003F4, 440,
+    0x003F7, 501,
+    0x003F9, 493,
+    0x003FA, 501,
+    0x00460, 501,
+    0x00462, 501,
+    0x00464, 501,
+    0x00466, 501,
+    0x00468, 501,
+    0x0046A, 501,
+    0x0046C, 501,
+    0x0046E, 501,
+    0x00470, 501,
+    0x00472, 501,
+    0x00474, 501,
+    0x00476, 501,
+    0x00478, 501,
+    0x0047A, 501,
+    0x0047C, 501,
+    0x0047E, 501,
+    0x00480, 501,
+    0x0048A, 501,
+    0x0048C, 501,
+    0x0048E, 501,
+    0x00490, 501,
+    0x00492, 501,
+    0x00494, 501,
+    0x00496, 501,
+    0x00498, 501,
+    0x0049A, 501,
+    0x0049C, 501,
+    0x0049E, 501,
+    0x004A0, 501,
+    0x004A2, 501,
+    0x004A4, 501,
+    0x004A6, 501,
+    0x004A8, 501,
+    0x004AA, 501,
+    0x004AC, 501,
+    0x004AE, 501,
+    0x004B0, 501,
+    0x004B2, 501,
+    0x004B4, 501,
+    0x004B6, 501,
+    0x004B8, 501,
+    0x004BA, 501,
+    0x004BC, 501,
+    0x004BE, 501,
+    0x004C0, 515,
+    0x004C1, 501,
+    0x004C3, 501,
+    0x004C5, 501,
+    0x004C7, 501,
+    0x004C9, 501,
+    0x004CB, 501,
+    0x004CD, 501,
+    0x004D0, 501,
+    0x004D2, 501,
+    0x004D4, 501,
+    0x004D6, 501,
+    0x004D8, 501,
+    0x004DA, 501,
+    0x004DC, 501,
+    0x004DE, 501,
+    0x004E0, 501,
+    0x004E2, 501,
+    0x004E4, 501,
+    0x004E6, 501,
+    0x004E8, 501,
+    0x004EA, 501,
+    0x004EC, 501,
+    0x004EE, 501,
+    0x004F0, 501,
+    0x004F2, 501,
+    0x004F4, 501,
+    0x004F6, 501,
+    0x004F8, 501,
+    0x004FA, 501,
+    0x004FC, 501,
+    0x004FE, 501,
+    0x00500, 501,
+    0x00502, 501,
+    0x00504, 501,
+    0x00506, 501,
+    0x00508, 501,
+    0x0050A, 501,
+    0x0050C, 501,
+    0x0050E, 501,
+    0x00510, 501,
+    0x00512, 501,
+    0x00514, 501,
+    0x00516, 501,
+    0x00518, 501,
+    0x0051A, 501,
+    0x0051C, 501,
+    0x0051E, 501,
+    0x00520, 501,
+    0x00522, 501,
+    0x00524, 501,
+    0x00526, 501,
+    0x00528, 501,
+    0x0052A, 501,
+    0x0052C, 501,
+    0x0052E, 501,
+    0x010C7, 7764,
+    0x010CD, 7764,
+    0x01E00, 501,
+    0x01E02, 501,
+    0x01E04, 501,
+    0x01E06, 501,
+    0x01E08, 501,
+    0x01E0A, 501,
+    0x01E0C, 501,
+    0x01E0E, 501,
+    0x01E10, 501,
+    0x01E12, 501,
+    0x01E14, 501,
+    0x01E16, 501,
+    0x01E18, 501,
+    0x01E1A, 501,
+    0x01E1C, 501,
+    0x01E1E, 501,
+    0x01E20, 501,
+    0x01E22, 501,
+    0x01E24, 501,
+    0x01E26, 501,
+    0x01E28, 501,
+    0x01E2A, 501,
+    0x01E2C, 501,
+    0x01E2E, 501,
+    0x01E30, 501,
+    0x01E32, 501,
+    0x01E34, 501,
+    0x01E36, 501,
+    0x01E38, 501,
+    0x01E3A, 501,
+    0x01E3C, 501,
+    0x01E3E, 501,
+    0x01E40, 501,
+    0x01E42, 501,
+    0x01E44, 501,
+    0x01E46, 501,
+    0x01E48, 501,
+    0x01E4A, 501,
+    0x01E4C, 501,
+    0x01E4E, 501,
+    0x01E50, 501,
+    0x01E52, 501,
+    0x01E54, 501,
+    0x01E56, 501,
+    0x01E58, 501,
+    0x01E5A, 501,
+    0x01E5C, 501,
+    0x01E5E, 501,
+    0x01E60, 501,
+    0x01E62, 501,
+    0x01E64, 501,
+    0x01E66, 501,
+    0x01E68, 501,
+    0x01E6A, 501,
+    0x01E6C, 501,
+    0x01E6E, 501,
+    0x01E70, 501,
+    0x01E72, 501,
+    0x01E74, 501,
+    0x01E76, 501,
+    0x01E78, 501,
+    0x01E7A, 501,
+    0x01E7C, 501,
+    0x01E7E, 501,
+    0x01E80, 501,
+    0x01E82, 501,
+    0x01E84, 501,
+    0x01E86, 501,
+    0x01E88, 501,
+    0x01E8A, 501,
+    0x01E8C, 501,
+    0x01E8E, 501,
+    0x01E90, 501,
+    0x01E92, 501,
+    0x01E94, 501,
+    0x01E9E, -7115,
+    0x01EA0, 501,
+    0x01EA2, 501,
+    0x01EA4, 501,
+    0x01EA6, 501,
+    0x01EA8, 501,
+    0x01EAA, 501,
+    0x01EAC, 501,
+    0x01EAE, 501,
+    0x01EB0, 501,
+    0x01EB2, 501,
+    0x01EB4, 501,
+    0x01EB6, 501,
+    0x01EB8, 501,
+    0x01EBA, 501,
+    0x01EBC, 501,
+    0x01EBE, 501,
+    0x01EC0, 501,
+    0x01EC2, 501,
+    0x01EC4, 501,
+    0x01EC6, 501,
+    0x01EC8, 501,
+    0x01ECA, 501,
+    0x01ECC, 501,
+    0x01ECE, 501,
+    0x01ED0, 501,
+    0x01ED2, 501,
+    0x01ED4, 501,
+    0x01ED6, 501,
+    0x01ED8, 501,
+    0x01EDA, 501,
+    0x01EDC, 501,
+    0x01EDE, 501,
+    0x01EE0, 501,
+    0x01EE2, 501,
+    0x01EE4, 501,
+    0x01EE6, 501,
+    0x01EE8, 501,
+    0x01EEA, 501,
+    0x01EEC, 501,
+    0x01EEE, 501,
+    0x01EF0, 501,
+    0x01EF2, 501,
+    0x01EF4, 501,
+    0x01EF6, 501,
+    0x01EF8, 501,
+    0x01EFA, 501,
+    0x01EFC, 501,
+    0x01EFE, 501,
+    0x01F59, 492,
+    0x01F5B, 492,
+    0x01F5D, 492,
+    0x01F5F, 492,
+    0x01FBC, 491,
+    0x01FCC, 491,
+    0x01FEC, 493,
+    0x01FFC, 491,
+    0x02126, -7017,
+    0x0212A, -7883,
+    0x0212B, -7762,
+    0x02132, 528,
+    0x02183, 501,
+    0x02C60, 501,
+    0x02C62, -10243,
+    0x02C63, -3314,
+    0x02C64, -10227,
+    0x02C67, 501,
+    0x02C69, 501,
+    0x02C6B, 501,
+    0x02C6D, -10280,
+    0x02C6E, -10249,
+    0x02C6F, -10283,
+    0x02C70, -10282,
+    0x02C72, 501,
+    0x02C75, 501,
+    0x02C80, 501,
+    0x02C82, 501,
+    0x02C84, 501,
+    0x02C86, 501,
+    0x02C88, 501,
+    0x02C8A, 501,
+    0x02C8C, 501,
+    0x02C8E, 501,
+    0x02C90, 501,
+    0x02C92, 501,
+    0x02C94, 501,
+    0x02C96, 501,
+    0x02C98, 501,
+    0x02C9A, 501,
+    0x02C9C, 501,
+    0x02C9E, 501,
+    0x02CA0, 501,
+    0x02CA2, 501,
+    0x02CA4, 501,
+    0x02CA6, 501,
+    0x02CA8, 501,
+    0x02CAA, 501,
+    0x02CAC, 501,
+    0x02CAE, 501,
+    0x02CB0, 501,
+    0x02CB2, 501,
+    0x02CB4, 501,
+    0x02CB6, 501,
+    0x02CB8, 501,
+    0x02CBA, 501,
+    0x02CBC, 501,
+    0x02CBE, 501,
+    0x02CC0, 501,
+    0x02CC2, 501,
+    0x02CC4, 501,
+    0x02CC6, 501,
+    0x02CC8, 501,
+    0x02CCA, 501,
+    0x02CCC, 501,
+    0x02CCE, 501,
+    0x02CD0, 501,
+    0x02CD2, 501,
+    0x02CD4, 501,
+    0x02CD6, 501,
+    0x02CD8, 501,
+    0x02CDA, 501,
+    0x02CDC, 501,
+    0x02CDE, 501,
+    0x02CE0, 501,
+    0x02CE2, 501,
+    0x02CEB, 501,
+    0x02CED, 501,
+    0x02CF2, 501,
+    0x0A640, 501,
+    0x0A642, 501,
+    0x0A644, 501,
+    0x0A646, 501,
+    0x0A648, 501,
+    0x0A64A, 501,
+    0x0A64C, 501,
+    0x0A64E, 501,
+    0x0A650, 501,
+    0x0A652, 501,
+    0x0A654, 501,
+    0x0A656, 501,
+    0x0A658, 501,
+    0x0A65A, 501,
+    0x0A65C, 501,
+    0x0A65E, 501,
+    0x0A660, 501,
+    0x0A662, 501,
+    0x0A664, 501,
+    0x0A666, 501,
+    0x0A668, 501,
+    0x0A66A, 501,
+    0x0A66C, 501,
+    0x0A680, 501,
+    0x0A682, 501,
+    0x0A684, 501,
+    0x0A686, 501,
+    0x0A688, 501,
+    0x0A68A, 501,
+    0x0A68C, 501,
+    0x0A68E, 501,
+    0x0A690, 501,
+    0x0A692, 501,
+    0x0A694, 501,
+    0x0A696, 501,
+    0x0A698, 501,
+    0x0A69A, 501,
+    0x0A722, 501,
+    0x0A724, 501,
+    0x0A726, 501,
+    0x0A728, 501,
+    0x0A72A, 501,
+    0x0A72C, 501,
+    0x0A72E, 501,
+    0x0A732, 501,
+    0x0A734, 501,
+    0x0A736, 501,
+    0x0A738, 501,
+    0x0A73A, 501,
+    0x0A73C, 501,
+    0x0A73E, 501,
+    0x0A740, 501,
+    0x0A742, 501,
+    0x0A744, 501,
+    0x0A746, 501,
+    0x0A748, 501,
+    0x0A74A, 501,
+    0x0A74C, 501,
+    0x0A74E, 501,
+    0x0A750, 501,
+    0x0A752, 501,
+    0x0A754, 501,
+    0x0A756, 501,
+    0x0A758, 501,
+    0x0A75A, 501,
+    0x0A75C, 501,
+    0x0A75E, 501,
+    0x0A760, 501,
+    0x0A762, 501,
+    0x0A764, 501,
+    0x0A766, 501,
+    0x0A768, 501,
+    0x0A76A, 501,
+    0x0A76C, 501,
+    0x0A76E, 501,
+    0x0A779, 501,
+    0x0A77B, 501,
+    0x0A77D, -34832,
+    0x0A77E, 501,
+    0x0A780, 501,
+    0x0A782, 501,
+    0x0A784, 501,
+    0x0A786, 501,
+    0x0A78B, 501,
+    0x0A78D, -41780,
+    0x0A790, 501,
+    0x0A792, 501,
+    0x0A796, 501,
+    0x0A798, 501,
+    0x0A79A, 501,
+    0x0A79C, 501,
+    0x0A79E, 501,
+    0x0A7A0, 501,
+    0x0A7A2, 501,
+    0x0A7A4, 501,
+    0x0A7A6, 501,
+    0x0A7A8, 501,
+    0x0A7AA, -41808,
+    0x0A7AB, -41819,
+    0x0A7AC, -41815,
+    0x0A7AD, -41805,
+    0x0A7AE, -41808,
+    0x0A7B0, -41758,
+    0x0A7B1, -41782,
+    0x0A7B2, -41761,
+    0x0A7B3, 1428,
+    0x0A7B4, 501,
+    0x0A7B6, 501,
+    0x0A7B8, 501,
+    0x0A7BA, 501,
+    0x0A7BC, 501,
+    0x0A7BE, 501,
+    0x0A7C2, 501,
+    0x0A7C4, 452,
+    0x0A7C5, -41807,
+    0x0A7C6, -34884,
+  ]
+
+  toUpperRanges = [
+    0x00061, 0x0007A, 468,
+    0x000E0, 0x000F6, 468,
+    0x000F8, 0x000FE, 468,
+    0x0023F, 0x00240, 11315,
+    0x00256, 0x00257, 295,
+    0x0028A, 0x0028B, 283,
+    0x0037B, 0x0037D, 630,
+    0x003AD, 0x003AF, 463,
+    0x003B1, 0x003C1, 468,
+    0x003C3, 0x003CB, 468,
+    0x003CD, 0x003CE, 437,
+    0x00430, 0x0044F, 468,
+    0x00450, 0x0045F, 420,
+    0x00561, 0x00586, 452,
+    0x010D0, 0x010FA, 3508,
+    0x010FD, 0x010FF, 3508,
+    0x013F8, 0x013FD, 492,
+    0x01C83, 0x01C84, -5742,
+    0x01F00, 0x01F07, 508,
+    0x01F10, 0x01F15, 508,
+    0x01F20, 0x01F27, 508,
+    0x01F30, 0x01F37, 508,
+    0x01F40, 0x01F45, 508,
+    0x01F60, 0x01F67, 508,
+    0x01F70, 0x01F71, 574,
+    0x01F72, 0x01F75, 586,
+    0x01F76, 0x01F77, 600,
+    0x01F78, 0x01F79, 628,
+    0x01F7A, 0x01F7B, 612,
+    0x01F7C, 0x01F7D, 626,
+    0x01F80, 0x01F87, 508,
+    0x01F90, 0x01F97, 508,
+    0x01FA0, 0x01FA7, 508,
+    0x01FB0, 0x01FB1, 508,
+    0x01FD0, 0x01FD1, 508,
+    0x01FE0, 0x01FE1, 508,
+    0x02C30, 0x02C5E, 452,
+    0x02D00, 0x02D25, -6764,
+    0x0AB70, 0x0ABBF, -38364,
+    0x0FF41, 0x0FF5A, 468,
+    0x10428, 0x1044F, 460,
+    0x104D8, 0x104FB, 460,
+    0x10CC0, 0x10CF2, 436,
+    0x118C0, 0x118DF, 468,
+    0x16E60, 0x16E7F, 468,
+    0x1E922, 0x1E943, 466,
+  ]
+
+  toUpperSinglets = [
+    0x000B5, 1243,
+    0x000FF, 621,
+    0x00101, 499,
+    0x00103, 499,
+    0x00105, 499,
+    0x00107, 499,
+    0x00109, 499,
+    0x0010B, 499,
+    0x0010D, 499,
+    0x0010F, 499,
+    0x00111, 499,
+    0x00113, 499,
+    0x00115, 499,
+    0x00117, 499,
+    0x00119, 499,
+    0x0011B, 499,
+    0x0011D, 499,
+    0x0011F, 499,
+    0x00121, 499,
+    0x00123, 499,
+    0x00125, 499,
+    0x00127, 499,
+    0x00129, 499,
+    0x0012B, 499,
+    0x0012D, 499,
+    0x0012F, 499,
+    0x00131, 268,
+    0x00133, 499,
+    0x00135, 499,
+    0x00137, 499,
+    0x0013A, 499,
+    0x0013C, 499,
+    0x0013E, 499,
+    0x00140, 499,
+    0x00142, 499,
+    0x00144, 499,
+    0x00146, 499,
+    0x00148, 499,
+    0x0014B, 499,
+    0x0014D, 499,
+    0x0014F, 499,
+    0x00151, 499,
+    0x00153, 499,
+    0x00155, 499,
+    0x00157, 499,
+    0x00159, 499,
+    0x0015B, 499,
+    0x0015D, 499,
+    0x0015F, 499,
+    0x00161, 499,
+    0x00163, 499,
+    0x00165, 499,
+    0x00167, 499,
+    0x00169, 499,
+    0x0016B, 499,
+    0x0016D, 499,
+    0x0016F, 499,
+    0x00171, 499,
+    0x00173, 499,
+    0x00175, 499,
+    0x00177, 499,
+    0x0017A, 499,
+    0x0017C, 499,
+    0x0017E, 499,
+    0x0017F, 200,
+    0x00180, 695,
+    0x00183, 499,
+    0x00185, 499,
+    0x00188, 499,
+    0x0018C, 499,
+    0x00192, 499,
+    0x00195, 597,
+    0x00199, 499,
+    0x0019A, 663,
+    0x0019E, 630,
+    0x001A1, 499,
+    0x001A3, 499,
+    0x001A5, 499,
+    0x001A8, 499,
+    0x001AD, 499,
+    0x001B0, 499,
+    0x001B4, 499,
+    0x001B6, 499,
+    0x001B9, 499,
+    0x001BD, 499,
+    0x001BF, 556,
+    0x001C5, 499,
+    0x001C6, 498,
+    0x001C8, 499,
+    0x001C9, 498,
+    0x001CB, 499,
+    0x001CC, 498,
+    0x001CE, 499,
+    0x001D0, 499,
+    0x001D2, 499,
+    0x001D4, 499,
+    0x001D6, 499,
+    0x001D8, 499,
+    0x001DA, 499,
+    0x001DC, 499,
+    0x001DD, 421,
+    0x001DF, 499,
+    0x001E1, 499,
+    0x001E3, 499,
+    0x001E5, 499,
+    0x001E7, 499,
+    0x001E9, 499,
+    0x001EB, 499,
+    0x001ED, 499,
+    0x001EF, 499,
+    0x001F2, 499,
+    0x001F3, 498,
+    0x001F5, 499,
+    0x001F9, 499,
+    0x001FB, 499,
+    0x001FD, 499,
+    0x001FF, 499,
+    0x00201, 499,
+    0x00203, 499,
+    0x00205, 499,
+    0x00207, 499,
+    0x00209, 499,
+    0x0020B, 499,
+    0x0020D, 499,
+    0x0020F, 499,
+    0x00211, 499,
+    0x00213, 499,
+    0x00215, 499,
+    0x00217, 499,
+    0x00219, 499,
+    0x0021B, 499,
+    0x0021D, 499,
+    0x0021F, 499,
+    0x00223, 499,
+    0x00225, 499,
+    0x00227, 499,
+    0x00229, 499,
+    0x0022B, 499,
+    0x0022D, 499,
+    0x0022F, 499,
+    0x00231, 499,
+    0x00233, 499,
+    0x0023C, 499,
+    0x00242, 499,
+    0x00247, 499,
+    0x00249, 499,
+    0x0024B, 499,
+    0x0024D, 499,
+    0x0024F, 499,
+    0x00250, 11283,
+    0x00251, 11280,
+    0x00252, 11282,
+    0x00253, 290,
+    0x00254, 294,
+    0x00259, 298,
+    0x0025B, 297,
+    0x0025C, 42819,
+    0x00260, 295,
+    0x00261, 42815,
+    0x00263, 293,
+    0x00265, 42780,
+    0x00266, 42808,
+    0x00268, 291,
+    0x00269, 289,
+    0x0026A, 42808,
+    0x0026B, 11243,
+    0x0026C, 42805,
+    0x0026F, 289,
+    0x00271, 11249,
+    0x00272, 287,
+    0x00275, 286,
+    0x0027D, 11227,
+    0x00280, 282,
+    0x00282, 42807,
+    0x00283, 282,
+    0x00287, 42782,
+    0x00288, 282,
+    0x00289, 431,
+    0x0028C, 429,
+    0x00292, 281,
+    0x0029D, 42761,
+    0x0029E, 42758,
+    0x00371, 499,
+    0x00373, 499,
+    0x00377, 499,
+    0x003AC, 462,
+    0x003C2, 469,
+    0x003CC, 436,
+    0x003D0, 438,
+    0x003D1, 443,
+    0x003D5, 453,
+    0x003D6, 446,
+    0x003D7, 492,
+    0x003D9, 499,
+    0x003DB, 499,
+    0x003DD, 499,
+    0x003DF, 499,
+    0x003E1, 499,
+    0x003E3, 499,
+    0x003E5, 499,
+    0x003E7, 499,
+    0x003E9, 499,
+    0x003EB, 499,
+    0x003ED, 499,
+    0x003EF, 499,
+    0x003F0, 414,
+    0x003F1, 420,
+    0x003F2, 507,
+    0x003F3, 384,
+    0x003F5, 404,
+    0x003F8, 499,
+    0x003FB, 499,
+    0x00461, 499,
+    0x00463, 499,
+    0x00465, 499,
+    0x00467, 499,
+    0x00469, 499,
+    0x0046B, 499,
+    0x0046D, 499,
+    0x0046F, 499,
+    0x00471, 499,
+    0x00473, 499,
+    0x00475, 499,
+    0x00477, 499,
+    0x00479, 499,
+    0x0047B, 499,
+    0x0047D, 499,
+    0x0047F, 499,
+    0x00481, 499,
+    0x0048B, 499,
+    0x0048D, 499,
+    0x0048F, 499,
+    0x00491, 499,
+    0x00493, 499,
+    0x00495, 499,
+    0x00497, 499,
+    0x00499, 499,
+    0x0049B, 499,
+    0x0049D, 499,
+    0x0049F, 499,
+    0x004A1, 499,
+    0x004A3, 499,
+    0x004A5, 499,
+    0x004A7, 499,
+    0x004A9, 499,
+    0x004AB, 499,
+    0x004AD, 499,
+    0x004AF, 499,
+    0x004B1, 499,
+    0x004B3, 499,
+    0x004B5, 499,
+    0x004B7, 499,
+    0x004B9, 499,
+    0x004BB, 499,
+    0x004BD, 499,
+    0x004BF, 499,
+    0x004C2, 499,
+    0x004C4, 499,
+    0x004C6, 499,
+    0x004C8, 499,
+    0x004CA, 499,
+    0x004CC, 499,
+    0x004CE, 499,
+    0x004CF, 485,
+    0x004D1, 499,
+    0x004D3, 499,
+    0x004D5, 499,
+    0x004D7, 499,
+    0x004D9, 499,
+    0x004DB, 499,
+    0x004DD, 499,
+    0x004DF, 499,
+    0x004E1, 499,
+    0x004E3, 499,
+    0x004E5, 499,
+    0x004E7, 499,
+    0x004E9, 499,
+    0x004EB, 499,
+    0x004ED, 499,
+    0x004EF, 499,
+    0x004F1, 499,
+    0x004F3, 499,
+    0x004F5, 499,
+    0x004F7, 499,
+    0x004F9, 499,
+    0x004FB, 499,
+    0x004FD, 499,
+    0x004FF, 499,
+    0x00501, 499,
+    0x00503, 499,
+    0x00505, 499,
+    0x00507, 499,
+    0x00509, 499,
+    0x0050B, 499,
+    0x0050D, 499,
+    0x0050F, 499,
+    0x00511, 499,
+    0x00513, 499,
+    0x00515, 499,
+    0x00517, 499,
+    0x00519, 499,
+    0x0051B, 499,
+    0x0051D, 499,
+    0x0051F, 499,
+    0x00521, 499,
+    0x00523, 499,
+    0x00525, 499,
+    0x00527, 499,
+    0x00529, 499,
+    0x0052B, 499,
+    0x0052D, 499,
+    0x0052F, 499,
+    0x01C80, -5754,
+    0x01C81, -5753,
+    0x01C82, -5744,
+    0x01C85, -5743,
+    0x01C86, -5736,
+    0x01C87, -5681,
+    0x01C88, 35766,
+    0x01D79, 35832,
+    0x01D7D, 4314,
+    0x01D8E, 35884,
+    0x01E01, 499,
+    0x01E03, 499,
+    0x01E05, 499,
+    0x01E07, 499,
+    0x01E09, 499,
+    0x01E0B, 499,
+    0x01E0D, 499,
+    0x01E0F, 499,
+    0x01E11, 499,
+    0x01E13, 499,
+    0x01E15, 499,
+    0x01E17, 499,
+    0x01E19, 499,
+    0x01E1B, 499,
+    0x01E1D, 499,
+    0x01E1F, 499,
+    0x01E21, 499,
+    0x01E23, 499,
+    0x01E25, 499,
+    0x01E27, 499,
+    0x01E29, 499,
+    0x01E2B, 499,
+    0x01E2D, 499,
+    0x01E2F, 499,
+    0x01E31, 499,
+    0x01E33, 499,
+    0x01E35, 499,
+    0x01E37, 499,
+    0x01E39, 499,
+    0x01E3B, 499,
+    0x01E3D, 499,
+    0x01E3F, 499,
+    0x01E41, 499,
+    0x01E43, 499,
+    0x01E45, 499,
+    0x01E47, 499,
+    0x01E49, 499,
+    0x01E4B, 499,
+    0x01E4D, 499,
+    0x01E4F, 499,
+    0x01E51, 499,
+    0x01E53, 499,
+    0x01E55, 499,
+    0x01E57, 499,
+    0x01E59, 499,
+    0x01E5B, 499,
+    0x01E5D, 499,
+    0x01E5F, 499,
+    0x01E61, 499,
+    0x01E63, 499,
+    0x01E65, 499,
+    0x01E67, 499,
+    0x01E69, 499,
+    0x01E6B, 499,
+    0x01E6D, 499,
+    0x01E6F, 499,
+    0x01E71, 499,
+    0x01E73, 499,
+    0x01E75, 499,
+    0x01E77, 499,
+    0x01E79, 499,
+    0x01E7B, 499,
+    0x01E7D, 499,
+    0x01E7F, 499,
+    0x01E81, 499,
+    0x01E83, 499,
+    0x01E85, 499,
+    0x01E87, 499,
+    0x01E89, 499,
+    0x01E8B, 499,
+    0x01E8D, 499,
+    0x01E8F, 499,
+    0x01E91, 499,
+    0x01E93, 499,
+    0x01E95, 499,
+    0x01E9B, 441,
+    0x01EA1, 499,
+    0x01EA3, 499,
+    0x01EA5, 499,
+    0x01EA7, 499,
+    0x01EA9, 499,
+    0x01EAB, 499,
+    0x01EAD, 499,
+    0x01EAF, 499,
+    0x01EB1, 499,
+    0x01EB3, 499,
+    0x01EB5, 499,
+    0x01EB7, 499,
+    0x01EB9, 499,
+    0x01EBB, 499,
+    0x01EBD, 499,
+    0x01EBF, 499,
+    0x01EC1, 499,
+    0x01EC3, 499,
+    0x01EC5, 499,
+    0x01EC7, 499,
+    0x01EC9, 499,
+    0x01ECB, 499,
+    0x01ECD, 499,
+    0x01ECF, 499,
+    0x01ED1, 499,
+    0x01ED3, 499,
+    0x01ED5, 499,
+    0x01ED7, 499,
+    0x01ED9, 499,
+    0x01EDB, 499,
+    0x01EDD, 499,
+    0x01EDF, 499,
+    0x01EE1, 499,
+    0x01EE3, 499,
+    0x01EE5, 499,
+    0x01EE7, 499,
+    0x01EE9, 499,
+    0x01EEB, 499,
+    0x01EED, 499,
+    0x01EEF, 499,
+    0x01EF1, 499,
+    0x01EF3, 499,
+    0x01EF5, 499,
+    0x01EF7, 499,
+    0x01EF9, 499,
+    0x01EFB, 499,
+    0x01EFD, 499,
+    0x01EFF, 499,
+    0x01F51, 508,
+    0x01F53, 508,
+    0x01F55, 508,
+    0x01F57, 508,
+    0x01FB3, 509,
+    0x01FBE, -6705,
+    0x01FC3, 509,
+    0x01FE5, 507,
+    0x01FF3, 509,
+    0x0214E, 472,
+    0x02184, 499,
+    0x02C61, 499,
+    0x02C65, -10295,
+    0x02C66, -10292,
+    0x02C68, 499,
+    0x02C6A, 499,
+    0x02C6C, 499,
+    0x02C73, 499,
+    0x02C76, 499,
+    0x02C81, 499,
+    0x02C83, 499,
+    0x02C85, 499,
+    0x02C87, 499,
+    0x02C89, 499,
+    0x02C8B, 499,
+    0x02C8D, 499,
+    0x02C8F, 499,
+    0x02C91, 499,
+    0x02C93, 499,
+    0x02C95, 499,
+    0x02C97, 499,
+    0x02C99, 499,
+    0x02C9B, 499,
+    0x02C9D, 499,
+    0x02C9F, 499,
+    0x02CA1, 499,
+    0x02CA3, 499,
+    0x02CA5, 499,
+    0x02CA7, 499,
+    0x02CA9, 499,
+    0x02CAB, 499,
+    0x02CAD, 499,
+    0x02CAF, 499,
+    0x02CB1, 499,
+    0x02CB3, 499,
+    0x02CB5, 499,
+    0x02CB7, 499,
+    0x02CB9, 499,
+    0x02CBB, 499,
+    0x02CBD, 499,
+    0x02CBF, 499,
+    0x02CC1, 499,
+    0x02CC3, 499,
+    0x02CC5, 499,
+    0x02CC7, 499,
+    0x02CC9, 499,
+    0x02CCB, 499,
+    0x02CCD, 499,
+    0x02CCF, 499,
+    0x02CD1, 499,
+    0x02CD3, 499,
+    0x02CD5, 499,
+    0x02CD7, 499,
+    0x02CD9, 499,
+    0x02CDB, 499,
+    0x02CDD, 499,
+    0x02CDF, 499,
+    0x02CE1, 499,
+    0x02CE3, 499,
+    0x02CEC, 499,
+    0x02CEE, 499,
+    0x02CF3, 499,
+    0x02D27, -6764,
+    0x02D2D, -6764,
+    0x0A641, 499,
+    0x0A643, 499,
+    0x0A645, 499,
+    0x0A647, 499,
+    0x0A649, 499,
+    0x0A64B, 499,
+    0x0A64D, 499,
+    0x0A64F, 499,
+    0x0A651, 499,
+    0x0A653, 499,
+    0x0A655, 499,
+    0x0A657, 499,
+    0x0A659, 499,
+    0x0A65B, 499,
+    0x0A65D, 499,
+    0x0A65F, 499,
+    0x0A661, 499,
+    0x0A663, 499,
+    0x0A665, 499,
+    0x0A667, 499,
+    0x0A669, 499,
+    0x0A66B, 499,
+    0x0A66D, 499,
+    0x0A681, 499,
+    0x0A683, 499,
+    0x0A685, 499,
+    0x0A687, 499,
+    0x0A689, 499,
+    0x0A68B, 499,
+    0x0A68D, 499,
+    0x0A68F, 499,
+    0x0A691, 499,
+    0x0A693, 499,
+    0x0A695, 499,
+    0x0A697, 499,
+    0x0A699, 499,
+    0x0A69B, 499,
+    0x0A723, 499,
+    0x0A725, 499,
+    0x0A727, 499,
+    0x0A729, 499,
+    0x0A72B, 499,
+    0x0A72D, 499,
+    0x0A72F, 499,
+    0x0A733, 499,
+    0x0A735, 499,
+    0x0A737, 499,
+    0x0A739, 499,
+    0x0A73B, 499,
+    0x0A73D, 499,
+    0x0A73F, 499,
+    0x0A741, 499,
+    0x0A743, 499,
+    0x0A745, 499,
+    0x0A747, 499,
+    0x0A749, 499,
+    0x0A74B, 499,
+    0x0A74D, 499,
+    0x0A74F, 499,
+    0x0A751, 499,
+    0x0A753, 499,
+    0x0A755, 499,
+    0x0A757, 499,
+    0x0A759, 499,
+    0x0A75B, 499,
+    0x0A75D, 499,
+    0x0A75F, 499,
+    0x0A761, 499,
+    0x0A763, 499,
+    0x0A765, 499,
+    0x0A767, 499,
+    0x0A769, 499,
+    0x0A76B, 499,
+    0x0A76D, 499,
+    0x0A76F, 499,
+    0x0A77A, 499,
+    0x0A77C, 499,
+    0x0A77F, 499,
+    0x0A781, 499,
+    0x0A783, 499,
+    0x0A785, 499,
+    0x0A787, 499,
+    0x0A78C, 499,
+    0x0A791, 499,
+    0x0A793, 499,
+    0x0A794, 548,
+    0x0A797, 499,
+    0x0A799, 499,
+    0x0A79B, 499,
+    0x0A79D, 499,
+    0x0A79F, 499,
+    0x0A7A1, 499,
+    0x0A7A3, 499,
+    0x0A7A5, 499,
+    0x0A7A7, 499,
+    0x0A7A9, 499,
+    0x0A7B5, 499,
+    0x0A7B7, 499,
+    0x0A7B9, 499,
+    0x0A7BB, 499,
+    0x0A7BD, 499,
+    0x0A7BF, 499,
+    0x0A7C3, 499,
+    0x0AB53, -428,
+  ]
+
+  toTitleSinglets = [
+    0x001C4, 501,
+    0x001C6, 499,
+    0x001C7, 501,
+    0x001C9, 499,
+    0x001CA, 501,
+    0x001CC, 499,
+    0x001F1, 501,
+    0x001F3, 499,
+  ]
+
+  alphaRanges = [
+    0x00041, 0x0005A,
+    0x00061, 0x0007A,
+    0x000C0, 0x000D6,
+    0x000D8, 0x000F6,
+    0x000F8, 0x002C1,
+    0x002C6, 0x002D1,
+    0x002E0, 0x002E4,
+    0x00370, 0x00374,
+    0x00376, 0x00377,
+    0x0037A, 0x0037D,
+    0x00388, 0x0038A,
+    0x0038E, 0x003A1,
+    0x003A3, 0x003F5,
+    0x003F7, 0x00481,
+    0x0048A, 0x0052F,
+    0x00531, 0x00556,
+    0x00560, 0x00588,
+    0x005D0, 0x005EA,
+    0x005EF, 0x005F2,
+    0x00620, 0x0064A,
+    0x0066E, 0x0066F,
+    0x00671, 0x006D3,
+    0x006E5, 0x006E6,
+    0x006EE, 0x006EF,
+    0x006FA, 0x006FC,
+    0x00712, 0x0072F,
+    0x0074D, 0x007A5,
+    0x007CA, 0x007EA,
+    0x007F4, 0x007F5,
+    0x00800, 0x00815,
+    0x00840, 0x00858,
+    0x00860, 0x0086A,
+    0x008A0, 0x008B4,
+    0x008B6, 0x008BD,
+    0x00904, 0x00939,
+    0x00958, 0x00961,
+    0x00971, 0x00980,
+    0x00985, 0x0098C,
+    0x0098F, 0x00990,
+    0x00993, 0x009A8,
+    0x009AA, 0x009B0,
+    0x009B6, 0x009B9,
+    0x009DC, 0x009DD,
+    0x009DF, 0x009E1,
+    0x009F0, 0x009F1,
+    0x00A05, 0x00A0A,
+    0x00A0F, 0x00A10,
+    0x00A13, 0x00A28,
+    0x00A2A, 0x00A30,
+    0x00A32, 0x00A33,
+    0x00A35, 0x00A36,
+    0x00A38, 0x00A39,
+    0x00A59, 0x00A5C,
+    0x00A72, 0x00A74,
+    0x00A85, 0x00A8D,
+    0x00A8F, 0x00A91,
+    0x00A93, 0x00AA8,
+    0x00AAA, 0x00AB0,
+    0x00AB2, 0x00AB3,
+    0x00AB5, 0x00AB9,
+    0x00AE0, 0x00AE1,
+    0x00B05, 0x00B0C,
+    0x00B0F, 0x00B10,
+    0x00B13, 0x00B28,
+    0x00B2A, 0x00B30,
+    0x00B32, 0x00B33,
+    0x00B35, 0x00B39,
+    0x00B5C, 0x00B5D,
+    0x00B5F, 0x00B61,
+    0x00B85, 0x00B8A,
+    0x00B8E, 0x00B90,
+    0x00B92, 0x00B95,
+    0x00B99, 0x00B9A,
+    0x00B9E, 0x00B9F,
+    0x00BA3, 0x00BA4,
+    0x00BA8, 0x00BAA,
+    0x00BAE, 0x00BB9,
+    0x00C05, 0x00C0C,
+    0x00C0E, 0x00C10,
+    0x00C12, 0x00C28,
+    0x00C2A, 0x00C39,
+    0x00C58, 0x00C5A,
+    0x00C60, 0x00C61,
+    0x00C85, 0x00C8C,
+    0x00C8E, 0x00C90,
+    0x00C92, 0x00CA8,
+    0x00CAA, 0x00CB3,
+    0x00CB5, 0x00CB9,
+    0x00CE0, 0x00CE1,
+    0x00CF1, 0x00CF2,
+    0x00D05, 0x00D0C,
+    0x00D0E, 0x00D10,
+    0x00D12, 0x00D3A,
+    0x00D54, 0x00D56,
+    0x00D5F, 0x00D61,
+    0x00D7A, 0x00D7F,
+    0x00D85, 0x00D96,
+    0x00D9A, 0x00DB1,
+    0x00DB3, 0x00DBB,
+    0x00DC0, 0x00DC6,
+    0x00E01, 0x00E30,
+    0x00E32, 0x00E33,
+    0x00E40, 0x00E46,
+    0x00E81, 0x00E82,
+    0x00E86, 0x00E8A,
+    0x00E8C, 0x00EA3,
+    0x00EA7, 0x00EB0,
+    0x00EB2, 0x00EB3,
+    0x00EC0, 0x00EC4,
+    0x00EDC, 0x00EDF,
+    0x00F40, 0x00F47,
+    0x00F49, 0x00F6C,
+    0x00F88, 0x00F8C,
+    0x01000, 0x0102A,
+    0x01050, 0x01055,
+    0x0105A, 0x0105D,
+    0x01065, 0x01066,
+    0x0106E, 0x01070,
+    0x01075, 0x01081,
+    0x010A0, 0x010C5,
+    0x010D0, 0x010FA,
+    0x010FC, 0x01248,
+    0x0124A, 0x0124D,
+    0x01250, 0x01256,
+    0x0125A, 0x0125D,
+    0x01260, 0x01288,
+    0x0128A, 0x0128D,
+    0x01290, 0x012B0,
+    0x012B2, 0x012B5,
+    0x012B8, 0x012BE,
+    0x012C2, 0x012C5,
+    0x012C8, 0x012D6,
+    0x012D8, 0x01310,
+    0x01312, 0x01315,
+    0x01318, 0x0135A,
+    0x01380, 0x0138F,
+    0x013A0, 0x013F5,
+    0x013F8, 0x013FD,
+    0x01401, 0x0166C,
+    0x0166F, 0x0167F,
+    0x01681, 0x0169A,
+    0x016A0, 0x016EA,
+    0x016F1, 0x016F8,
+    0x01700, 0x0170C,
+    0x0170E, 0x01711,
+    0x01720, 0x01731,
+    0x01740, 0x01751,
+    0x01760, 0x0176C,
+    0x0176E, 0x01770,
+    0x01780, 0x017B3,
+    0x01820, 0x01878,
+    0x01880, 0x01884,
+    0x01887, 0x018A8,
+    0x018B0, 0x018F5,
+    0x01900, 0x0191E,
+    0x01950, 0x0196D,
+    0x01970, 0x01974,
+    0x01980, 0x019AB,
+    0x019B0, 0x019C9,
+    0x01A00, 0x01A16,
+    0x01A20, 0x01A54,
+    0x01B05, 0x01B33,
+    0x01B45, 0x01B4B,
+    0x01B83, 0x01BA0,
+    0x01BAE, 0x01BAF,
+    0x01BBA, 0x01BE5,
+    0x01C00, 0x01C23,
+    0x01C4D, 0x01C4F,
+    0x01C5A, 0x01C7D,
+    0x01C80, 0x01C88,
+    0x01C90, 0x01CBA,
+    0x01CBD, 0x01CBF,
+    0x01CE9, 0x01CEC,
+    0x01CEE, 0x01CF3,
+    0x01CF5, 0x01CF6,
+    0x01D00, 0x01DBF,
+    0x01E00, 0x01F15,
+    0x01F18, 0x01F1D,
+    0x01F20, 0x01F45,
+    0x01F48, 0x01F4D,
+    0x01F50, 0x01F57,
+    0x01F5F, 0x01F7D,
+    0x01F80, 0x01FB4,
+    0x01FB6, 0x01FBC,
+    0x01FC2, 0x01FC4,
+    0x01FC6, 0x01FCC,
+    0x01FD0, 0x01FD3,
+    0x01FD6, 0x01FDB,
+    0x01FE0, 0x01FEC,
+    0x01FF2, 0x01FF4,
+    0x01FF6, 0x01FFC,
+    0x02090, 0x0209C,
+    0x0210A, 0x02113,
+    0x02119, 0x0211D,
+    0x0212A, 0x0212D,
+    0x0212F, 0x02139,
+    0x0213C, 0x0213F,
+    0x02145, 0x02149,
+    0x02183, 0x02184,
+    0x02C00, 0x02C2E,
+    0x02C30, 0x02C5E,
+    0x02C60, 0x02CE4,
+    0x02CEB, 0x02CEE,
+    0x02CF2, 0x02CF3,
+    0x02D00, 0x02D25,
+    0x02D30, 0x02D67,
+    0x02D80, 0x02D96,
+    0x02DA0, 0x02DA6,
+    0x02DA8, 0x02DAE,
+    0x02DB0, 0x02DB6,
+    0x02DB8, 0x02DBE,
+    0x02DC0, 0x02DC6,
+    0x02DC8, 0x02DCE,
+    0x02DD0, 0x02DD6,
+    0x02DD8, 0x02DDE,
+    0x03005, 0x03006,
+    0x03031, 0x03035,
+    0x0303B, 0x0303C,
+    0x03041, 0x03096,
+    0x0309D, 0x0309F,
+    0x030A1, 0x030FA,
+    0x030FC, 0x030FF,
+    0x03105, 0x0312F,
+    0x03131, 0x0318E,
+    0x031A0, 0x031BA,
+    0x031F0, 0x031FF,
+    0x0A000, 0x0A48C,
+    0x0A4D0, 0x0A4FD,
+    0x0A500, 0x0A60C,
+    0x0A610, 0x0A61F,
+    0x0A62A, 0x0A62B,
+    0x0A640, 0x0A66E,
+    0x0A67F, 0x0A69D,
+    0x0A6A0, 0x0A6E5,
+    0x0A717, 0x0A71F,
+    0x0A722, 0x0A788,
+    0x0A78B, 0x0A7BF,
+    0x0A7C2, 0x0A7C6,
+    0x0A7F7, 0x0A801,
+    0x0A803, 0x0A805,
+    0x0A807, 0x0A80A,
+    0x0A80C, 0x0A822,
+    0x0A840, 0x0A873,
+    0x0A882, 0x0A8B3,
+    0x0A8F2, 0x0A8F7,
+    0x0A8FD, 0x0A8FE,
+    0x0A90A, 0x0A925,
+    0x0A930, 0x0A946,
+    0x0A960, 0x0A97C,
+    0x0A984, 0x0A9B2,
+    0x0A9E0, 0x0A9E4,
+    0x0A9E6, 0x0A9EF,
+    0x0A9FA, 0x0A9FE,
+    0x0AA00, 0x0AA28,
+    0x0AA40, 0x0AA42,
+    0x0AA44, 0x0AA4B,
+    0x0AA60, 0x0AA76,
+    0x0AA7E, 0x0AAAF,
+    0x0AAB5, 0x0AAB6,
+    0x0AAB9, 0x0AABD,
+    0x0AADB, 0x0AADD,
+    0x0AAE0, 0x0AAEA,
+    0x0AAF2, 0x0AAF4,
+    0x0AB01, 0x0AB06,
+    0x0AB09, 0x0AB0E,
+    0x0AB11, 0x0AB16,
+    0x0AB20, 0x0AB26,
+    0x0AB28, 0x0AB2E,
+    0x0AB30, 0x0AB5A,
+    0x0AB5C, 0x0AB67,
+    0x0AB70, 0x0ABE2,
+    0x0D7B0, 0x0D7C6,
+    0x0D7CB, 0x0D7FB,
+    0x0F900, 0x0FA6D,
+    0x0FA70, 0x0FAD9,
+    0x0FB00, 0x0FB06,
+    0x0FB13, 0x0FB17,
+    0x0FB1F, 0x0FB28,
+    0x0FB2A, 0x0FB36,
+    0x0FB38, 0x0FB3C,
+    0x0FB40, 0x0FB41,
+    0x0FB43, 0x0FB44,
+    0x0FB46, 0x0FBB1,
+    0x0FBD3, 0x0FD3D,
+    0x0FD50, 0x0FD8F,
+    0x0FD92, 0x0FDC7,
+    0x0FDF0, 0x0FDFB,
+    0x0FE70, 0x0FE74,
+    0x0FE76, 0x0FEFC,
+    0x0FF21, 0x0FF3A,
+    0x0FF41, 0x0FF5A,
+    0x0FF66, 0x0FFBE,
+    0x0FFC2, 0x0FFC7,
+    0x0FFCA, 0x0FFCF,
+    0x0FFD2, 0x0FFD7,
+    0x0FFDA, 0x0FFDC,
+    0x10000, 0x1000B,
+    0x1000D, 0x10026,
+    0x10028, 0x1003A,
+    0x1003C, 0x1003D,
+    0x1003F, 0x1004D,
+    0x10050, 0x1005D,
+    0x10080, 0x100FA,
+    0x10280, 0x1029C,
+    0x102A0, 0x102D0,
+    0x10300, 0x1031F,
+    0x1032D, 0x10340,
+    0x10342, 0x10349,
+    0x10350, 0x10375,
+    0x10380, 0x1039D,
+    0x103A0, 0x103C3,
+    0x103C8, 0x103CF,
+    0x10400, 0x1049D,
+    0x104B0, 0x104D3,
+    0x104D8, 0x104FB,
+    0x10500, 0x10527,
+    0x10530, 0x10563,
+    0x10600, 0x10736,
+    0x10740, 0x10755,
+    0x10760, 0x10767,
+    0x10800, 0x10805,
+    0x1080A, 0x10835,
+    0x10837, 0x10838,
+    0x1083F, 0x10855,
+    0x10860, 0x10876,
+    0x10880, 0x1089E,
+    0x108E0, 0x108F2,
+    0x108F4, 0x108F5,
+    0x10900, 0x10915,
+    0x10920, 0x10939,
+    0x10980, 0x109B7,
+    0x109BE, 0x109BF,
+    0x10A10, 0x10A13,
+    0x10A15, 0x10A17,
+    0x10A19, 0x10A35,
+    0x10A60, 0x10A7C,
+    0x10A80, 0x10A9C,
+    0x10AC0, 0x10AC7,
+    0x10AC9, 0x10AE4,
+    0x10B00, 0x10B35,
+    0x10B40, 0x10B55,
+    0x10B60, 0x10B72,
+    0x10B80, 0x10B91,
+    0x10C00, 0x10C48,
+    0x10C80, 0x10CB2,
+    0x10CC0, 0x10CF2,
+    0x10D00, 0x10D23,
+    0x10F00, 0x10F1C,
+    0x10F30, 0x10F45,
+    0x10FE0, 0x10FF6,
+    0x11003, 0x11037,
+    0x11083, 0x110AF,
+    0x110D0, 0x110E8,
+    0x11103, 0x11126,
+    0x11150, 0x11172,
+    0x11183, 0x111B2,
+    0x111C1, 0x111C4,
+    0x11200, 0x11211,
+    0x11213, 0x1122B,
+    0x11280, 0x11286,
+    0x1128A, 0x1128D,
+    0x1128F, 0x1129D,
+    0x1129F, 0x112A8,
+    0x112B0, 0x112DE,
+    0x11305, 0x1130C,
+    0x1130F, 0x11310,
+    0x11313, 0x11328,
+    0x1132A, 0x11330,
+    0x11332, 0x11333,
+    0x11335, 0x11339,
+    0x1135D, 0x11361,
+    0x11400, 0x11434,
+    0x11447, 0x1144A,
+    0x11480, 0x114AF,
+    0x114C4, 0x114C5,
+    0x11580, 0x115AE,
+    0x115D8, 0x115DB,
+    0x11600, 0x1162F,
+    0x11680, 0x116AA,
+    0x11700, 0x1171A,
+    0x11800, 0x1182B,
+    0x118A0, 0x118DF,
+    0x119A0, 0x119A7,
+    0x119AA, 0x119D0,
+    0x11A0B, 0x11A32,
+    0x11A5C, 0x11A89,
+    0x11AC0, 0x11AF8,
+    0x11C00, 0x11C08,
+    0x11C0A, 0x11C2E,
+    0x11C72, 0x11C8F,
+    0x11D00, 0x11D06,
+    0x11D08, 0x11D09,
+    0x11D0B, 0x11D30,
+    0x11D60, 0x11D65,
+    0x11D67, 0x11D68,
+    0x11D6A, 0x11D89,
+    0x11EE0, 0x11EF2,
+    0x12000, 0x12399,
+    0x12480, 0x12543,
+    0x13000, 0x1342E,
+    0x14400, 0x14646,
+    0x16800, 0x16A38,
+    0x16A40, 0x16A5E,
+    0x16AD0, 0x16AED,
+    0x16B00, 0x16B2F,
+    0x16B40, 0x16B43,
+    0x16B63, 0x16B77,
+    0x16B7D, 0x16B8F,
+    0x16E40, 0x16E7F,
+    0x16F00, 0x16F4A,
+    0x16F93, 0x16F9F,
+    0x16FE0, 0x16FE1,
+    0x18800, 0x18AF2,
+    0x1B000, 0x1B11E,
+    0x1B150, 0x1B152,
+    0x1B164, 0x1B167,
+    0x1B170, 0x1B2FB,
+    0x1BC00, 0x1BC6A,
+    0x1BC70, 0x1BC7C,
+    0x1BC80, 0x1BC88,
+    0x1BC90, 0x1BC99,
+    0x1D400, 0x1D454,
+    0x1D456, 0x1D49C,
+    0x1D49E, 0x1D49F,
+    0x1D4A5, 0x1D4A6,
+    0x1D4A9, 0x1D4AC,
+    0x1D4AE, 0x1D4B9,
+    0x1D4BD, 0x1D4C3,
+    0x1D4C5, 0x1D505,
+    0x1D507, 0x1D50A,
+    0x1D50D, 0x1D514,
+    0x1D516, 0x1D51C,
+    0x1D51E, 0x1D539,
+    0x1D53B, 0x1D53E,
+    0x1D540, 0x1D544,
+    0x1D54A, 0x1D550,
+    0x1D552, 0x1D6A5,
+    0x1D6A8, 0x1D6C0,
+    0x1D6C2, 0x1D6DA,
+    0x1D6DC, 0x1D6FA,
+    0x1D6FC, 0x1D714,
+    0x1D716, 0x1D734,
+    0x1D736, 0x1D74E,
+    0x1D750, 0x1D76E,
+    0x1D770, 0x1D788,
+    0x1D78A, 0x1D7A8,
+    0x1D7AA, 0x1D7C2,
+    0x1D7C4, 0x1D7CB,
+    0x1E100, 0x1E12C,
+    0x1E137, 0x1E13D,
+    0x1E2C0, 0x1E2EB,
+    0x1E800, 0x1E8C4,
+    0x1E900, 0x1E943,
+    0x1EE00, 0x1EE03,
+    0x1EE05, 0x1EE1F,
+    0x1EE21, 0x1EE22,
+    0x1EE29, 0x1EE32,
+    0x1EE34, 0x1EE37,
+    0x1EE4D, 0x1EE4F,
+    0x1EE51, 0x1EE52,
+    0x1EE61, 0x1EE62,
+    0x1EE67, 0x1EE6A,
+    0x1EE6C, 0x1EE72,
+    0x1EE74, 0x1EE77,
+    0x1EE79, 0x1EE7C,
+    0x1EE80, 0x1EE89,
+    0x1EE8B, 0x1EE9B,
+    0x1EEA1, 0x1EEA3,
+    0x1EEA5, 0x1EEA9,
+    0x1EEAB, 0x1EEBB,
+    0x2F800, 0x2FA1D,
+  ]
+
+  alphaSinglets = [
+    0x000AA,
+    0x000B5,
+    0x000BA,
+    0x002EC,
+    0x002EE,
+    0x0037F,
+    0x00386,
+    0x0038C,
+    0x00559,
+    0x006D5,
+    0x006FF,
+    0x00710,
+    0x007B1,
+    0x007FA,
+    0x0081A,
+    0x00824,
+    0x00828,
+    0x0093D,
+    0x00950,
+    0x009B2,
+    0x009BD,
+    0x009CE,
+    0x009FC,
+    0x00A5E,
+    0x00ABD,
+    0x00AD0,
+    0x00AF9,
+    0x00B3D,
+    0x00B71,
+    0x00B83,
+    0x00B9C,
+    0x00BD0,
+    0x00C3D,
+    0x00C80,
+    0x00CBD,
+    0x00CDE,
+    0x00D3D,
+    0x00D4E,
+    0x00DBD,
+    0x00E84,
+    0x00EA5,
+    0x00EBD,
+    0x00EC6,
+    0x00F00,
+    0x0103F,
+    0x01061,
+    0x0108E,
+    0x010C7,
+    0x010CD,
+    0x01258,
+    0x012C0,
+    0x017D7,
+    0x017DC,
+    0x018AA,
+    0x01AA7,
+    0x01CFA,
+    0x01F59,
+    0x01F5B,
+    0x01F5D,
+    0x01FBE,
+    0x02071,
+    0x0207F,
+    0x02102,
+    0x02107,
+    0x02115,
+    0x02124,
+    0x02126,
+    0x02128,
+    0x0214E,
+    0x02D27,
+    0x02D2D,
+    0x02D6F,
+    0x02E2F,
+    0x03400,
+    0x04DB5,
+    0x04E00,
+    0x09FEF,
+    0x0A8FB,
+    0x0A9CF,
+    0x0AA7A,
+    0x0AAB1,
+    0x0AAC0,
+    0x0AAC2,
+    0x0AC00,
+    0x0D7A3,
+    0x0FB1D,
+    0x0FB3E,
+    0x10808,
+    0x1083C,
+    0x10A00,
+    0x10F27,
+    0x11144,
+    0x11176,
+    0x111DA,
+    0x111DC,
+    0x11288,
+    0x1133D,
+    0x11350,
+    0x1145F,
+    0x114C7,
+    0x11644,
+    0x116B8,
+    0x118FF,
+    0x119E1,
+    0x119E3,
+    0x11A00,
+    0x11A3A,
+    0x11A50,
+    0x11A9D,
+    0x11C40,
+    0x11D46,
+    0x11D98,
+    0x16F50,
+    0x16FE3,
+    0x17000,
+    0x187F7,
+    0x1D4A2,
+    0x1D4BB,
+    0x1D546,
+    0x1E14E,
+    0x1E94B,
+    0x1EE24,
+    0x1EE27,
+    0x1EE39,
+    0x1EE3B,
+    0x1EE42,
+    0x1EE47,
+    0x1EE49,
+    0x1EE4B,
+    0x1EE54,
+    0x1EE57,
+    0x1EE59,
+    0x1EE5B,
+    0x1EE5D,
+    0x1EE5F,
+    0x1EE64,
+    0x1EE7E,
+    0x20000,
+    0x2A6D6,
+    0x2A700,
+    0x2B734,
+    0x2B740,
+    0x2B81D,
+    0x2B820,
+    0x2CEA1,
+    0x2CEB0,
+    0x2EBE0,
+  ]
+
+  spaceRanges = [
+    0x00009, 0x0000D,
+    0x00020, 0x00020,
+    0x00085, 0x00085,
+    0x000A0, 0x000A0,
+    0x01680, 0x01680,
+    0x02000, 0x0200A,
+    0x02028, 0x02029,
+    0x0202F, 0x0202F,
+    0x0205F, 0x0205F,
+    0x03000, 0x03000,
+  ]
+
+  unicodeSpaces = [
+    Rune 0x00009,
+    Rune 0x0000A,
+    Rune 0x0000B,
+    Rune 0x0000C,
+    Rune 0x0000D,
+    Rune 0x00020,
+    Rune 0x00085,
+    Rune 0x000A0,
+    Rune 0x01680,
+    Rune 0x02000,
+    Rune 0x02001,
+    Rune 0x02002,
+    Rune 0x02003,
+    Rune 0x02004,
+    Rune 0x02005,
+    Rune 0x02006,
+    Rune 0x02007,
+    Rune 0x02008,
+    Rune 0x02009,
+    Rune 0x0200A,
+    Rune 0x02028,
+    Rune 0x02029,
+    Rune 0x0202F,
+    Rune 0x0205F,
+    Rune 0x03000,
+  ]
+