// Generated from Unicode 17.0 UnicodeData.txt; see tools/generate_unicode.mjs.
// Do not edit this file by hand. Regenerate it for Unicode data updates.
//|

///|
priv struct UnicodeRange {
  start : Int32
  end : Int32
}

///|
let unicode_C : Array[UnicodeRange] = [
  { start: 0, end: 31, },
  { start: 127, end: 159, },
  { start: 173, end: 173, },
  { start: 888, end: 889, },
  { start: 896, end: 899, },
  { start: 907, end: 907, },
  { start: 909, end: 909, },
  { start: 930, end: 930, },
  { start: 1328, end: 1328, },
  { start: 1367, end: 1368, },
  { start: 1419, end: 1420, },
  { start: 1424, end: 1424, },
  { start: 1480, end: 1487, },
  { start: 1515, end: 1518, },
  { start: 1525, end: 1541, },
  { start: 1564, end: 1564, },
  { start: 1757, end: 1757, },
  { start: 1806, end: 1807, },
  { start: 1867, end: 1868, },
  { start: 1970, end: 1983, },
  { start: 2043, end: 2044, },
  { start: 2094, end: 2095, },
  { start: 2111, end: 2111, },
  { start: 2140, end: 2141, },
  { start: 2143, end: 2143, },
  { start: 2155, end: 2159, },
  { start: 2192, end: 2198, },
  { start: 2274, end: 2274, },
  { start: 2436, end: 2436, },
  { start: 2445, end: 2446, },
  { start: 2449, end: 2450, },
  { start: 2473, end: 2473, },
  { start: 2481, end: 2481, },
  { start: 2483, end: 2485, },
  { start: 2490, end: 2491, },
  { start: 2501, end: 2502, },
  { start: 2505, end: 2506, },
  { start: 2511, end: 2518, },
  { start: 2520, end: 2523, },
  { start: 2526, end: 2526, },
  { start: 2532, end: 2533, },
  { start: 2559, end: 2560, },
  { start: 2564, end: 2564, },
  { start: 2571, end: 2574, },
  { start: 2577, end: 2578, },
  { start: 2601, end: 2601, },
  { start: 2609, end: 2609, },
  { start: 2612, end: 2612, },
  { start: 2615, end: 2615, },
  { start: 2618, end: 2619, },
  { start: 2621, end: 2621, },
  { start: 2627, end: 2630, },
  { start: 2633, end: 2634, },
  { start: 2638, end: 2640, },
  { start: 2642, end: 2648, },
  { start: 2653, end: 2653, },
  { start: 2655, end: 2661, },
  { start: 2679, end: 2688, },
  { start: 2692, end: 2692, },
  { start: 2702, end: 2702, },
  { start: 2706, end: 2706, },
  { start: 2729, end: 2729, },
  { start: 2737, end: 2737, },
  { start: 2740, end: 2740, },
  { start: 2746, end: 2747, },
  { start: 2758, end: 2758, },
  { start: 2762, end: 2762, },
  { start: 2766, end: 2767, },
  { start: 2769, end: 2783, },
  { start: 2788, end: 2789, },
  { start: 2802, end: 2808, },
  { start: 2816, end: 2816, },
  { start: 2820, end: 2820, },
  { start: 2829, end: 2830, },
  { start: 2833, end: 2834, },
  { start: 2857, end: 2857, },
  { start: 2865, end: 2865, },
  { start: 2868, end: 2868, },
  { start: 2874, end: 2875, },
  { start: 2885, end: 2886, },
  { start: 2889, end: 2890, },
  { start: 2894, end: 2900, },
  { start: 2904, end: 2907, },
  { start: 2910, end: 2910, },
  { start: 2916, end: 2917, },
  { start: 2936, end: 2945, },
  { start: 2948, end: 2948, },
  { start: 2955, end: 2957, },
  { start: 2961, end: 2961, },
  { start: 2966, end: 2968, },
  { start: 2971, end: 2971, },
  { start: 2973, end: 2973, },
  { start: 2976, end: 2978, },
  { start: 2981, end: 2983, },
  { start: 2987, end: 2989, },
  { start: 3002, end: 3005, },
  { start: 3011, end: 3013, },
  { start: 3017, end: 3017, },
  { start: 3022, end: 3023, },
  { start: 3025, end: 3030, },
  { start: 3032, end: 3045, },
  { start: 3067, end: 3071, },
  { start: 3085, end: 3085, },
  { start: 3089, end: 3089, },
  { start: 3113, end: 3113, },
  { start: 3130, end: 3131, },
  { start: 3141, end: 3141, },
  { start: 3145, end: 3145, },
  { start: 3150, end: 3156, },
  { start: 3159, end: 3159, },
  { start: 3163, end: 3163, },
  { start: 3166, end: 3167, },
  { start: 3172, end: 3173, },
  { start: 3184, end: 3190, },
  { start: 3213, end: 3213, },
  { start: 3217, end: 3217, },
  { start: 3241, end: 3241, },
  { start: 3252, end: 3252, },
  { start: 3258, end: 3259, },
  { start: 3269, end: 3269, },
  { start: 3273, end: 3273, },
  { start: 3278, end: 3284, },
  { start: 3287, end: 3291, },
  { start: 3295, end: 3295, },
  { start: 3300, end: 3301, },
  { start: 3312, end: 3312, },
  { start: 3316, end: 3327, },
  { start: 3341, end: 3341, },
  { start: 3345, end: 3345, },
  { start: 3397, end: 3397, },
  { start: 3401, end: 3401, },
  { start: 3408, end: 3411, },
  { start: 3428, end: 3429, },
  { start: 3456, end: 3456, },
  { start: 3460, end: 3460, },
  { start: 3479, end: 3481, },
  { start: 3506, end: 3506, },
  { start: 3516, end: 3516, },
  { start: 3518, end: 3519, },
  { start: 3527, end: 3529, },
  { start: 3531, end: 3534, },
  { start: 3541, end: 3541, },
  { start: 3543, end: 3543, },
  { start: 3552, end: 3557, },
  { start: 3568, end: 3569, },
  { start: 3573, end: 3584, },
  { start: 3643, end: 3646, },
  { start: 3676, end: 3712, },
  { start: 3715, end: 3715, },
  { start: 3717, end: 3717, },
  { start: 3723, end: 3723, },
  { start: 3748, end: 3748, },
  { start: 3750, end: 3750, },
  { start: 3774, end: 3775, },
  { start: 3781, end: 3781, },
  { start: 3783, end: 3783, },
  { start: 3791, end: 3791, },
  { start: 3802, end: 3803, },
  { start: 3808, end: 3839, },
  { start: 3912, end: 3912, },
  { start: 3949, end: 3952, },
  { start: 3992, end: 3992, },
  { start: 4029, end: 4029, },
  { start: 4045, end: 4045, },
  { start: 4059, end: 4095, },
  { start: 4294, end: 4294, },
  { start: 4296, end: 4300, },
  { start: 4302, end: 4303, },
  { start: 4681, end: 4681, },
  { start: 4686, end: 4687, },
  { start: 4695, end: 4695, },
  { start: 4697, end: 4697, },
  { start: 4702, end: 4703, },
  { start: 4745, end: 4745, },
  { start: 4750, end: 4751, },
  { start: 4785, end: 4785, },
  { start: 4790, end: 4791, },
  { start: 4799, end: 4799, },
  { start: 4801, end: 4801, },
  { start: 4806, end: 4807, },
  { start: 4823, end: 4823, },
  { start: 4881, end: 4881, },
  { start: 4886, end: 4887, },
  { start: 4955, end: 4956, },
  { start: 4989, end: 4991, },
  { start: 5018, end: 5023, },
  { start: 5110, end: 5111, },
  { start: 5118, end: 5119, },
  { start: 5789, end: 5791, },
  { start: 5881, end: 5887, },
  { start: 5910, end: 5918, },
  { start: 5943, end: 5951, },
  { start: 5972, end: 5983, },
  { start: 5997, end: 5997, },
  { start: 6001, end: 6001, },
  { start: 6004, end: 6015, },
  { start: 6110, end: 6111, },
  { start: 6122, end: 6127, },
  { start: 6138, end: 6143, },
  { start: 6158, end: 6158, },
  { start: 6170, end: 6175, },
  { start: 6265, end: 6271, },
  { start: 6315, end: 6319, },
  { start: 6390, end: 6399, },
  { start: 6431, end: 6431, },
  { start: 6444, end: 6447, },
  { start: 6460, end: 6463, },
  { start: 6465, end: 6467, },
  { start: 6510, end: 6511, },
  { start: 6517, end: 6527, },
  { start: 6572, end: 6575, },
  { start: 6602, end: 6607, },
  { start: 6619, end: 6621, },
  { start: 6684, end: 6685, },
  { start: 6751, end: 6751, },
  { start: 6781, end: 6782, },
  { start: 6794, end: 6799, },
  { start: 6810, end: 6815, },
  { start: 6830, end: 6831, },
  { start: 6878, end: 6879, },
  { start: 6892, end: 6911, },
  { start: 6989, end: 6989, },
  { start: 7156, end: 7163, },
  { start: 7224, end: 7226, },
  { start: 7242, end: 7244, },
  { start: 7307, end: 7311, },
  { start: 7355, end: 7356, },
  { start: 7368, end: 7375, },
  { start: 7419, end: 7423, },
  { start: 7958, end: 7959, },
  { start: 7966, end: 7967, },
  { start: 8006, end: 8007, },
  { start: 8014, end: 8015, },
  { start: 8024, end: 8024, },
  { start: 8026, end: 8026, },
  { start: 8028, end: 8028, },
  { start: 8030, end: 8030, },
  { start: 8062, end: 8063, },
  { start: 8117, end: 8117, },
  { start: 8133, end: 8133, },
  { start: 8148, end: 8149, },
  { start: 8156, end: 8156, },
  { start: 8176, end: 8177, },
  { start: 8181, end: 8181, },
  { start: 8191, end: 8191, },
  { start: 8203, end: 8207, },
  { start: 8234, end: 8238, },
  { start: 8288, end: 8303, },
  { start: 8306, end: 8307, },
  { start: 8335, end: 8335, },
  { start: 8349, end: 8351, },
  { start: 8386, end: 8399, },
  { start: 8433, end: 8447, },
  { start: 8588, end: 8591, },
  { start: 9258, end: 9279, },
  { start: 9291, end: 9311, },
  { start: 11124, end: 11125, },
  { start: 11508, end: 11512, },
  { start: 11558, end: 11558, },
  { start: 11560, end: 11564, },
  { start: 11566, end: 11567, },
  { start: 11624, end: 11630, },
  { start: 11633, end: 11646, },
  { start: 11671, end: 11679, },
  { start: 11687, end: 11687, },
  { start: 11695, end: 11695, },
  { start: 11703, end: 11703, },
  { start: 11711, end: 11711, },
  { start: 11719, end: 11719, },
  { start: 11727, end: 11727, },
  { start: 11735, end: 11735, },
  { start: 11743, end: 11743, },
  { start: 11870, end: 11903, },
  { start: 11930, end: 11930, },
  { start: 12020, end: 12031, },
  { start: 12246, end: 12271, },
  { start: 12352, end: 12352, },
  { start: 12439, end: 12440, },
  { start: 12544, end: 12548, },
  { start: 12592, end: 12592, },
  { start: 12687, end: 12687, },
  { start: 12774, end: 12782, },
  { start: 12831, end: 12831, },
  { start: 42125, end: 42127, },
  { start: 42183, end: 42191, },
  { start: 42540, end: 42559, },
  { start: 42744, end: 42751, },
  { start: 42973, end: 42992, },
  { start: 43053, end: 43055, },
  { start: 43066, end: 43071, },
  { start: 43128, end: 43135, },
  { start: 43206, end: 43213, },
  { start: 43226, end: 43231, },
  { start: 43348, end: 43358, },
  { start: 43389, end: 43391, },
  { start: 43470, end: 43470, },
  { start: 43482, end: 43485, },
  { start: 43519, end: 43519, },
  { start: 43575, end: 43583, },
  { start: 43598, end: 43599, },
  { start: 43610, end: 43611, },
  { start: 43715, end: 43738, },
  { start: 43767, end: 43776, },
  { start: 43783, end: 43784, },
  { start: 43791, end: 43792, },
  { start: 43799, end: 43807, },
  { start: 43815, end: 43815, },
  { start: 43823, end: 43823, },
  { start: 43884, end: 43887, },
  { start: 44014, end: 44015, },
  { start: 44026, end: 44031, },
  { start: 55204, end: 55215, },
  { start: 55239, end: 55242, },
  { start: 55292, end: 63743, },
  { start: 64110, end: 64111, },
  { start: 64218, end: 64255, },
  { start: 64263, end: 64274, },
  { start: 64280, end: 64284, },
  { start: 64311, end: 64311, },
  { start: 64317, end: 64317, },
  { start: 64319, end: 64319, },
  { start: 64322, end: 64322, },
  { start: 64325, end: 64325, },
  { start: 64976, end: 65007, },
  { start: 65050, end: 65055, },
  { start: 65107, end: 65107, },
  { start: 65127, end: 65127, },
  { start: 65132, end: 65135, },
  { start: 65141, end: 65141, },
  { start: 65277, end: 65280, },
  { start: 65471, end: 65473, },
  { start: 65480, end: 65481, },
  { start: 65488, end: 65489, },
  { start: 65496, end: 65497, },
  { start: 65501, end: 65503, },
  { start: 65511, end: 65511, },
  { start: 65519, end: 65531, },
  { start: 65534, end: 65535, },
  { start: 65548, end: 65548, },
  { start: 65575, end: 65575, },
  { start: 65595, end: 65595, },
  { start: 65598, end: 65598, },
  { start: 65614, end: 65615, },
  { start: 65630, end: 65663, },
  { start: 65787, end: 65791, },
  { start: 65795, end: 65798, },
  { start: 65844, end: 65846, },
  { start: 65935, end: 65935, },
  { start: 65949, end: 65951, },
  { start: 65953, end: 65999, },
  { start: 66046, end: 66175, },
  { start: 66205, end: 66207, },
  { start: 66257, end: 66271, },
  { start: 66300, end: 66303, },
  { start: 66340, end: 66348, },
  { start: 66379, end: 66383, },
  { start: 66427, end: 66431, },
  { start: 66462, end: 66462, },
  { start: 66500, end: 66503, },
  { start: 66518, end: 66559, },
  { start: 66718, end: 66719, },
  { start: 66730, end: 66735, },
  { start: 66772, end: 66775, },
  { start: 66812, end: 66815, },
  { start: 66856, end: 66863, },
  { start: 66916, end: 66926, },
  { start: 66939, end: 66939, },
  { start: 66955, end: 66955, },
  { start: 66963, end: 66963, },
  { start: 66966, end: 66966, },
  { start: 66978, end: 66978, },
  { start: 66994, end: 66994, },
  { start: 67002, end: 67002, },
  { start: 67005, end: 67007, },
  { start: 67060, end: 67071, },
  { start: 67383, end: 67391, },
  { start: 67414, end: 67423, },
  { start: 67432, end: 67455, },
  { start: 67462, end: 67462, },
  { start: 67505, end: 67505, },
  { start: 67515, end: 67583, },
  { start: 67590, end: 67591, },
  { start: 67593, end: 67593, },
  { start: 67638, end: 67638, },
  { start: 67641, end: 67643, },
  { start: 67645, end: 67646, },
  { start: 67670, end: 67670, },
  { start: 67743, end: 67750, },
  { start: 67760, end: 67807, },
  { start: 67827, end: 67827, },
  { start: 67830, end: 67834, },
  { start: 67868, end: 67870, },
  { start: 67898, end: 67902, },
  { start: 67930, end: 67967, },
  { start: 68024, end: 68027, },
  { start: 68048, end: 68049, },
  { start: 68100, end: 68100, },
  { start: 68103, end: 68107, },
  { start: 68116, end: 68116, },
  { start: 68120, end: 68120, },
  { start: 68150, end: 68151, },
  { start: 68155, end: 68158, },
  { start: 68169, end: 68175, },
  { start: 68185, end: 68191, },
  { start: 68256, end: 68287, },
  { start: 68327, end: 68330, },
  { start: 68343, end: 68351, },
  { start: 68406, end: 68408, },
  { start: 68438, end: 68439, },
  { start: 68467, end: 68471, },
  { start: 68498, end: 68504, },
  { start: 68509, end: 68520, },
  { start: 68528, end: 68607, },
  { start: 68681, end: 68735, },
  { start: 68787, end: 68799, },
  { start: 68851, end: 68857, },
  { start: 68904, end: 68911, },
  { start: 68922, end: 68927, },
  { start: 68966, end: 68968, },
  { start: 68998, end: 69005, },
  { start: 69008, end: 69215, },
  { start: 69247, end: 69247, },
  { start: 69290, end: 69290, },
  { start: 69294, end: 69295, },
  { start: 69298, end: 69313, },
  { start: 69320, end: 69327, },
  { start: 69337, end: 69369, },
  { start: 69416, end: 69423, },
  { start: 69466, end: 69487, },
  { start: 69514, end: 69551, },
  { start: 69580, end: 69599, },
  { start: 69623, end: 69631, },
  { start: 69710, end: 69713, },
  { start: 69750, end: 69758, },
  { start: 69821, end: 69821, },
  { start: 69827, end: 69839, },
  { start: 69865, end: 69871, },
  { start: 69882, end: 69887, },
  { start: 69941, end: 69941, },
  { start: 69960, end: 69967, },
  { start: 70007, end: 70015, },
  { start: 70112, end: 70112, },
  { start: 70133, end: 70143, },
  { start: 70162, end: 70162, },
  { start: 70210, end: 70271, },
  { start: 70279, end: 70279, },
  { start: 70281, end: 70281, },
  { start: 70286, end: 70286, },
  { start: 70302, end: 70302, },
  { start: 70314, end: 70319, },
  { start: 70379, end: 70383, },
  { start: 70394, end: 70399, },
  { start: 70404, end: 70404, },
  { start: 70413, end: 70414, },
  { start: 70417, end: 70418, },
  { start: 70441, end: 70441, },
  { start: 70449, end: 70449, },
  { start: 70452, end: 70452, },
  { start: 70458, end: 70458, },
  { start: 70469, end: 70470, },
  { start: 70473, end: 70474, },
  { start: 70478, end: 70479, },
  { start: 70481, end: 70486, },
  { start: 70488, end: 70492, },
  { start: 70500, end: 70501, },
  { start: 70509, end: 70511, },
  { start: 70517, end: 70527, },
  { start: 70538, end: 70538, },
  { start: 70540, end: 70541, },
  { start: 70543, end: 70543, },
  { start: 70582, end: 70582, },
  { start: 70593, end: 70593, },
  { start: 70595, end: 70596, },
  { start: 70598, end: 70598, },
  { start: 70603, end: 70603, },
  { start: 70614, end: 70614, },
  { start: 70617, end: 70624, },
  { start: 70627, end: 70655, },
  { start: 70748, end: 70748, },
  { start: 70754, end: 70783, },
  { start: 70856, end: 70863, },
  { start: 70874, end: 71039, },
  { start: 71094, end: 71095, },
  { start: 71134, end: 71167, },
  { start: 71237, end: 71247, },
  { start: 71258, end: 71263, },
  { start: 71277, end: 71295, },
  { start: 71354, end: 71359, },
  { start: 71370, end: 71375, },
  { start: 71396, end: 71423, },
  { start: 71451, end: 71452, },
  { start: 71468, end: 71471, },
  { start: 71495, end: 71679, },
  { start: 71740, end: 71839, },
  { start: 71923, end: 71934, },
  { start: 71943, end: 71944, },
  { start: 71946, end: 71947, },
  { start: 71956, end: 71956, },
  { start: 71959, end: 71959, },
  { start: 71990, end: 71990, },
  { start: 71993, end: 71994, },
  { start: 72007, end: 72015, },
  { start: 72026, end: 72095, },
  { start: 72104, end: 72105, },
  { start: 72152, end: 72153, },
  { start: 72165, end: 72191, },
  { start: 72264, end: 72271, },
  { start: 72355, end: 72367, },
  { start: 72441, end: 72447, },
  { start: 72458, end: 72543, },
  { start: 72552, end: 72639, },
  { start: 72674, end: 72687, },
  { start: 72698, end: 72703, },
  { start: 72713, end: 72713, },
  { start: 72759, end: 72759, },
  { start: 72774, end: 72783, },
  { start: 72813, end: 72815, },
  { start: 72848, end: 72849, },
  { start: 72872, end: 72872, },
  { start: 72887, end: 72959, },
  { start: 72967, end: 72967, },
  { start: 72970, end: 72970, },
  { start: 73015, end: 73017, },
  { start: 73019, end: 73019, },
  { start: 73022, end: 73022, },
  { start: 73032, end: 73039, },
  { start: 73050, end: 73055, },
  { start: 73062, end: 73062, },
  { start: 73065, end: 73065, },
  { start: 73103, end: 73103, },
  { start: 73106, end: 73106, },
  { start: 73113, end: 73119, },
  { start: 73130, end: 73135, },
  { start: 73180, end: 73183, },
  { start: 73194, end: 73439, },
  { start: 73465, end: 73471, },
  { start: 73489, end: 73489, },
  { start: 73531, end: 73533, },
  { start: 73563, end: 73647, },
  { start: 73649, end: 73663, },
  { start: 73714, end: 73726, },
  { start: 74650, end: 74751, },
  { start: 74863, end: 74863, },
  { start: 74869, end: 74879, },
  { start: 75076, end: 77711, },
  { start: 77811, end: 77823, },
  { start: 78896, end: 78911, },
  { start: 78934, end: 78943, },
  { start: 82939, end: 82943, },
  { start: 83527, end: 90367, },
  { start: 90426, end: 92159, },
  { start: 92729, end: 92735, },
  { start: 92767, end: 92767, },
  { start: 92778, end: 92781, },
  { start: 92863, end: 92863, },
  { start: 92874, end: 92879, },
  { start: 92910, end: 92911, },
  { start: 92918, end: 92927, },
  { start: 92998, end: 93007, },
  { start: 93018, end: 93018, },
  { start: 93026, end: 93026, },
  { start: 93048, end: 93052, },
  { start: 93072, end: 93503, },
  { start: 93562, end: 93759, },
  { start: 93851, end: 93855, },
  { start: 93881, end: 93882, },
  { start: 93908, end: 93951, },
  { start: 94027, end: 94030, },
  { start: 94088, end: 94094, },
  { start: 94112, end: 94175, },
  { start: 94181, end: 94191, },
  { start: 94199, end: 94207, },
  { start: 101590, end: 101630, },
  { start: 101663, end: 101759, },
  { start: 101875, end: 110575, },
  { start: 110580, end: 110580, },
  { start: 110588, end: 110588, },
  { start: 110591, end: 110591, },
  { start: 110883, end: 110897, },
  { start: 110899, end: 110927, },
  { start: 110931, end: 110932, },
  { start: 110934, end: 110947, },
  { start: 110952, end: 110959, },
  { start: 111356, end: 113663, },
  { start: 113771, end: 113775, },
  { start: 113789, end: 113791, },
  { start: 113801, end: 113807, },
  { start: 113818, end: 113819, },
  { start: 113824, end: 117759, },
  { start: 118013, end: 118015, },
  { start: 118452, end: 118457, },
  { start: 118481, end: 118495, },
  { start: 118513, end: 118527, },
  { start: 118574, end: 118575, },
  { start: 118599, end: 118607, },
  { start: 118724, end: 118783, },
  { start: 119030, end: 119039, },
  { start: 119079, end: 119080, },
  { start: 119155, end: 119162, },
  { start: 119275, end: 119295, },
  { start: 119366, end: 119487, },
  { start: 119508, end: 119519, },
  { start: 119540, end: 119551, },
  { start: 119639, end: 119647, },
  { start: 119673, end: 119807, },
  { start: 119893, end: 119893, },
  { start: 119965, end: 119965, },
  { start: 119968, end: 119969, },
  { start: 119971, end: 119972, },
  { start: 119975, end: 119976, },
  { start: 119981, end: 119981, },
  { start: 119994, end: 119994, },
  { start: 119996, end: 119996, },
  { start: 120004, end: 120004, },
  { start: 120070, end: 120070, },
  { start: 120075, end: 120076, },
  { start: 120085, end: 120085, },
  { start: 120093, end: 120093, },
  { start: 120122, end: 120122, },
  { start: 120127, end: 120127, },
  { start: 120133, end: 120133, },
  { start: 120135, end: 120137, },
  { start: 120145, end: 120145, },
  { start: 120486, end: 120487, },
  { start: 120780, end: 120781, },
  { start: 121484, end: 121498, },
  { start: 121504, end: 121504, },
  { start: 121520, end: 122623, },
  { start: 122655, end: 122660, },
  { start: 122667, end: 122879, },
  { start: 122887, end: 122887, },
  { start: 122905, end: 122906, },
  { start: 122914, end: 122914, },
  { start: 122917, end: 122917, },
  { start: 122923, end: 122927, },
  { start: 122990, end: 123022, },
  { start: 123024, end: 123135, },
  { start: 123181, end: 123183, },
  { start: 123198, end: 123199, },
  { start: 123210, end: 123213, },
  { start: 123216, end: 123535, },
  { start: 123567, end: 123583, },
  { start: 123642, end: 123646, },
  { start: 123648, end: 124111, },
  { start: 124154, end: 124367, },
  { start: 124411, end: 124414, },
  { start: 124416, end: 124607, },
  { start: 124639, end: 124639, },
  { start: 124662, end: 124669, },
  { start: 124672, end: 124895, },
  { start: 124903, end: 124903, },
  { start: 124908, end: 124908, },
  { start: 124911, end: 124911, },
  { start: 124927, end: 124927, },
  { start: 125125, end: 125126, },
  { start: 125143, end: 125183, },
  { start: 125260, end: 125263, },
  { start: 125274, end: 125277, },
  { start: 125280, end: 126064, },
  { start: 126133, end: 126208, },
  { start: 126270, end: 126463, },
  { start: 126468, end: 126468, },
  { start: 126496, end: 126496, },
  { start: 126499, end: 126499, },
  { start: 126501, end: 126502, },
  { start: 126504, end: 126504, },
  { start: 126515, end: 126515, },
  { start: 126520, end: 126520, },
  { start: 126522, end: 126522, },
  { start: 126524, end: 126529, },
  { start: 126531, end: 126534, },
  { start: 126536, end: 126536, },
  { start: 126538, end: 126538, },
  { start: 126540, end: 126540, },
  { start: 126544, end: 126544, },
  { start: 126547, end: 126547, },
  { start: 126549, end: 126550, },
  { start: 126552, end: 126552, },
  { start: 126554, end: 126554, },
  { start: 126556, end: 126556, },
  { start: 126558, end: 126558, },
  { start: 126560, end: 126560, },
  { start: 126563, end: 126563, },
  { start: 126565, end: 126566, },
  { start: 126571, end: 126571, },
  { start: 126579, end: 126579, },
  { start: 126584, end: 126584, },
  { start: 126589, end: 126589, },
  { start: 126591, end: 126591, },
  { start: 126602, end: 126602, },
  { start: 126620, end: 126624, },
  { start: 126628, end: 126628, },
  { start: 126634, end: 126634, },
  { start: 126652, end: 126703, },
  { start: 126706, end: 126975, },
  { start: 127020, end: 127023, },
  { start: 127124, end: 127135, },
  { start: 127151, end: 127152, },
  { start: 127168, end: 127168, },
  { start: 127184, end: 127184, },
  { start: 127222, end: 127231, },
  { start: 127406, end: 127461, },
  { start: 127491, end: 127503, },
  { start: 127548, end: 127551, },
  { start: 127561, end: 127567, },
  { start: 127570, end: 127583, },
  { start: 127590, end: 127743, },
  { start: 128729, end: 128731, },
  { start: 128749, end: 128751, },
  { start: 128765, end: 128767, },
  { start: 128986, end: 128991, },
  { start: 129004, end: 129007, },
  { start: 129009, end: 129023, },
  { start: 129036, end: 129039, },
  { start: 129096, end: 129103, },
  { start: 129114, end: 129119, },
  { start: 129160, end: 129167, },
  { start: 129198, end: 129199, },
  { start: 129212, end: 129215, },
  { start: 129218, end: 129231, },
  { start: 129241, end: 129279, },
  { start: 129624, end: 129631, },
  { start: 129646, end: 129647, },
  { start: 129661, end: 129663, },
  { start: 129675, end: 129677, },
  { start: 129735, end: 129735, },
  { start: 129737, end: 129740, },
  { start: 129757, end: 129758, },
  { start: 129771, end: 129774, },
  { start: 129785, end: 129791, },
  { start: 129939, end: 129939, },
  { start: 130043, end: 131071, },
  { start: 173792, end: 173823, },
  { start: 178206, end: 178207, },
  { start: 183982, end: 183983, },
  { start: 191457, end: 191471, },
  { start: 192094, end: 194559, },
  { start: 195102, end: 196607, },
  { start: 201547, end: 201551, },
  { start: 210042, end: 917759, },
  { start: 918000, end: 1114111, },
]

///|
let unicode_Cc : Array[UnicodeRange] = [
  { start: 0, end: 31, },
  { start: 127, end: 159, },
]

///|
let unicode_Cf : Array[UnicodeRange] = [
  { start: 173, end: 173, },
  { start: 1536, end: 1541, },
  { start: 1564, end: 1564, },
  { start: 1757, end: 1757, },
  { start: 1807, end: 1807, },
  { start: 2192, end: 2193, },
  { start: 2274, end: 2274, },
  { start: 6158, end: 6158, },
  { start: 8203, end: 8207, },
  { start: 8234, end: 8238, },
  { start: 8288, end: 8292, },
  { start: 8294, end: 8303, },
  { start: 65279, end: 65279, },
  { start: 65529, end: 65531, },
  { start: 69821, end: 69821, },
  { start: 69837, end: 69837, },
  { start: 78896, end: 78911, },
  { start: 113824, end: 113827, },
  { start: 119155, end: 119162, },
  { start: 917505, end: 917505, },
  { start: 917536, end: 917631, },
]

///|
let unicode_Co : Array[UnicodeRange] = [
  { start: 57344, end: 63743, },
  { start: 983040, end: 1048573, },
  { start: 1048576, end: 1114109, },
]

///|
let unicode_Cs : Array[UnicodeRange] = [{ start: 55296, end: 57343, }]

///|
let unicode_L : Array[UnicodeRange] = [
  { start: 65, end: 90, },
  { start: 97, end: 122, },
  { start: 170, end: 170, },
  { start: 181, end: 181, },
  { start: 186, end: 186, },
  { start: 192, end: 214, },
  { start: 216, end: 246, },
  { start: 248, end: 705, },
  { start: 710, end: 721, },
  { start: 736, end: 740, },
  { start: 748, end: 748, },
  { start: 750, end: 750, },
  { start: 880, end: 884, },
  { start: 886, end: 887, },
  { start: 890, end: 893, },
  { start: 895, end: 895, },
  { start: 902, end: 902, },
  { start: 904, end: 906, },
  { start: 908, end: 908, },
  { start: 910, end: 929, },
  { start: 931, end: 1013, },
  { start: 1015, end: 1153, },
  { start: 1162, end: 1327, },
  { start: 1329, end: 1366, },
  { start: 1369, end: 1369, },
  { start: 1376, end: 1416, },
  { start: 1488, end: 1514, },
  { start: 1519, end: 1522, },
  { start: 1568, end: 1610, },
  { start: 1646, end: 1647, },
  { start: 1649, end: 1747, },
  { start: 1749, end: 1749, },
  { start: 1765, end: 1766, },
  { start: 1774, end: 1775, },
  { start: 1786, end: 1788, },
  { start: 1791, end: 1791, },
  { start: 1808, end: 1808, },
  { start: 1810, end: 1839, },
  { start: 1869, end: 1957, },
  { start: 1969, end: 1969, },
  { start: 1994, end: 2026, },
  { start: 2036, end: 2037, },
  { start: 2042, end: 2042, },
  { start: 2048, end: 2069, },
  { start: 2074, end: 2074, },
  { start: 2084, end: 2084, },
  { start: 2088, end: 2088, },
  { start: 2112, end: 2136, },
  { start: 2144, end: 2154, },
  { start: 2160, end: 2183, },
  { start: 2185, end: 2191, },
  { start: 2208, end: 2249, },
  { start: 2308, end: 2361, },
  { start: 2365, end: 2365, },
  { start: 2384, end: 2384, },
  { start: 2392, end: 2401, },
  { start: 2417, end: 2432, },
  { start: 2437, end: 2444, },
  { start: 2447, end: 2448, },
  { start: 2451, end: 2472, },
  { start: 2474, end: 2480, },
  { start: 2482, end: 2482, },
  { start: 2486, end: 2489, },
  { start: 2493, end: 2493, },
  { start: 2510, end: 2510, },
  { start: 2524, end: 2525, },
  { start: 2527, end: 2529, },
  { start: 2544, end: 2545, },
  { start: 2556, end: 2556, },
  { start: 2565, end: 2570, },
  { start: 2575, end: 2576, },
  { start: 2579, end: 2600, },
  { start: 2602, end: 2608, },
  { start: 2610, end: 2611, },
  { start: 2613, end: 2614, },
  { start: 2616, end: 2617, },
  { start: 2649, end: 2652, },
  { start: 2654, end: 2654, },
  { start: 2674, end: 2676, },
  { start: 2693, end: 2701, },
  { start: 2703, end: 2705, },
  { start: 2707, end: 2728, },
  { start: 2730, end: 2736, },
  { start: 2738, end: 2739, },
  { start: 2741, end: 2745, },
  { start: 2749, end: 2749, },
  { start: 2768, end: 2768, },
  { start: 2784, end: 2785, },
  { start: 2809, end: 2809, },
  { start: 2821, end: 2828, },
  { start: 2831, end: 2832, },
  { start: 2835, end: 2856, },
  { start: 2858, end: 2864, },
  { start: 2866, end: 2867, },
  { start: 2869, end: 2873, },
  { start: 2877, end: 2877, },
  { start: 2908, end: 2909, },
  { start: 2911, end: 2913, },
  { start: 2929, end: 2929, },
  { start: 2947, end: 2947, },
  { start: 2949, end: 2954, },
  { start: 2958, end: 2960, },
  { start: 2962, end: 2965, },
  { start: 2969, end: 2970, },
  { start: 2972, end: 2972, },
  { start: 2974, end: 2975, },
  { start: 2979, end: 2980, },
  { start: 2984, end: 2986, },
  { start: 2990, end: 3001, },
  { start: 3024, end: 3024, },
  { start: 3077, end: 3084, },
  { start: 3086, end: 3088, },
  { start: 3090, end: 3112, },
  { start: 3114, end: 3129, },
  { start: 3133, end: 3133, },
  { start: 3160, end: 3162, },
  { start: 3164, end: 3165, },
  { start: 3168, end: 3169, },
  { start: 3200, end: 3200, },
  { start: 3205, end: 3212, },
  { start: 3214, end: 3216, },
  { start: 3218, end: 3240, },
  { start: 3242, end: 3251, },
  { start: 3253, end: 3257, },
  { start: 3261, end: 3261, },
  { start: 3292, end: 3294, },
  { start: 3296, end: 3297, },
  { start: 3313, end: 3314, },
  { start: 3332, end: 3340, },
  { start: 3342, end: 3344, },
  { start: 3346, end: 3386, },
  { start: 3389, end: 3389, },
  { start: 3406, end: 3406, },
  { start: 3412, end: 3414, },
  { start: 3423, end: 3425, },
  { start: 3450, end: 3455, },
  { start: 3461, end: 3478, },
  { start: 3482, end: 3505, },
  { start: 3507, end: 3515, },
  { start: 3517, end: 3517, },
  { start: 3520, end: 3526, },
  { start: 3585, end: 3632, },
  { start: 3634, end: 3635, },
  { start: 3648, end: 3654, },
  { start: 3713, end: 3714, },
  { start: 3716, end: 3716, },
  { start: 3718, end: 3722, },
  { start: 3724, end: 3747, },
  { start: 3749, end: 3749, },
  { start: 3751, end: 3760, },
  { start: 3762, end: 3763, },
  { start: 3773, end: 3773, },
  { start: 3776, end: 3780, },
  { start: 3782, end: 3782, },
  { start: 3804, end: 3807, },
  { start: 3840, end: 3840, },
  { start: 3904, end: 3911, },
  { start: 3913, end: 3948, },
  { start: 3976, end: 3980, },
  { start: 4096, end: 4138, },
  { start: 4159, end: 4159, },
  { start: 4176, end: 4181, },
  { start: 4186, end: 4189, },
  { start: 4193, end: 4193, },
  { start: 4197, end: 4198, },
  { start: 4206, end: 4208, },
  { start: 4213, end: 4225, },
  { start: 4238, end: 4238, },
  { start: 4256, end: 4293, },
  { start: 4295, end: 4295, },
  { start: 4301, end: 4301, },
  { start: 4304, end: 4346, },
  { start: 4348, end: 4680, },
  { start: 4682, end: 4685, },
  { start: 4688, end: 4694, },
  { start: 4696, end: 4696, },
  { start: 4698, end: 4701, },
  { start: 4704, end: 4744, },
  { start: 4746, end: 4749, },
  { start: 4752, end: 4784, },
  { start: 4786, end: 4789, },
  { start: 4792, end: 4798, },
  { start: 4800, end: 4800, },
  { start: 4802, end: 4805, },
  { start: 4808, end: 4822, },
  { start: 4824, end: 4880, },
  { start: 4882, end: 4885, },
  { start: 4888, end: 4954, },
  { start: 4992, end: 5007, },
  { start: 5024, end: 5109, },
  { start: 5112, end: 5117, },
  { start: 5121, end: 5740, },
  { start: 5743, end: 5759, },
  { start: 5761, end: 5786, },
  { start: 5792, end: 5866, },
  { start: 5873, end: 5880, },
  { start: 5888, end: 5905, },
  { start: 5919, end: 5937, },
  { start: 5952, end: 5969, },
  { start: 5984, end: 5996, },
  { start: 5998, end: 6000, },
  { start: 6016, end: 6067, },
  { start: 6103, end: 6103, },
  { start: 6108, end: 6108, },
  { start: 6176, end: 6264, },
  { start: 6272, end: 6276, },
  { start: 6279, end: 6312, },
  { start: 6314, end: 6314, },
  { start: 6320, end: 6389, },
  { start: 6400, end: 6430, },
  { start: 6480, end: 6509, },
  { start: 6512, end: 6516, },
  { start: 6528, end: 6571, },
  { start: 6576, end: 6601, },
  { start: 6656, end: 6678, },
  { start: 6688, end: 6740, },
  { start: 6823, end: 6823, },
  { start: 6917, end: 6963, },
  { start: 6981, end: 6988, },
  { start: 7043, end: 7072, },
  { start: 7086, end: 7087, },
  { start: 7098, end: 7141, },
  { start: 7168, end: 7203, },
  { start: 7245, end: 7247, },
  { start: 7258, end: 7293, },
  { start: 7296, end: 7306, },
  { start: 7312, end: 7354, },
  { start: 7357, end: 7359, },
  { start: 7401, end: 7404, },
  { start: 7406, end: 7411, },
  { start: 7413, end: 7414, },
  { start: 7418, end: 7418, },
  { start: 7424, end: 7615, },
  { start: 7680, end: 7957, },
  { start: 7960, end: 7965, },
  { start: 7968, end: 8005, },
  { start: 8008, end: 8013, },
  { start: 8016, end: 8023, },
  { start: 8025, end: 8025, },
  { start: 8027, end: 8027, },
  { start: 8029, end: 8029, },
  { start: 8031, end: 8061, },
  { start: 8064, end: 8116, },
  { start: 8118, end: 8124, },
  { start: 8126, end: 8126, },
  { start: 8130, end: 8132, },
  { start: 8134, end: 8140, },
  { start: 8144, end: 8147, },
  { start: 8150, end: 8155, },
  { start: 8160, end: 8172, },
  { start: 8178, end: 8180, },
  { start: 8182, end: 8188, },
  { start: 8305, end: 8305, },
  { start: 8319, end: 8319, },
  { start: 8336, end: 8348, },
  { start: 8450, end: 8450, },
  { start: 8455, end: 8455, },
  { start: 8458, end: 8467, },
  { start: 8469, end: 8469, },
  { start: 8473, end: 8477, },
  { start: 8484, end: 8484, },
  { start: 8486, end: 8486, },
  { start: 8488, end: 8488, },
  { start: 8490, end: 8493, },
  { start: 8495, end: 8505, },
  { start: 8508, end: 8511, },
  { start: 8517, end: 8521, },
  { start: 8526, end: 8526, },
  { start: 8579, end: 8580, },
  { start: 11264, end: 11492, },
  { start: 11499, end: 11502, },
  { start: 11506, end: 11507, },
  { start: 11520, end: 11557, },
  { start: 11559, end: 11559, },
  { start: 11565, end: 11565, },
  { start: 11568, end: 11623, },
  { start: 11631, end: 11631, },
  { start: 11648, end: 11670, },
  { start: 11680, end: 11686, },
  { start: 11688, end: 11694, },
  { start: 11696, end: 11702, },
  { start: 11704, end: 11710, },
  { start: 11712, end: 11718, },
  { start: 11720, end: 11726, },
  { start: 11728, end: 11734, },
  { start: 11736, end: 11742, },
  { start: 11823, end: 11823, },
  { start: 12293, end: 12294, },
  { start: 12337, end: 12341, },
  { start: 12347, end: 12348, },
  { start: 12353, end: 12438, },
  { start: 12445, end: 12447, },
  { start: 12449, end: 12538, },
  { start: 12540, end: 12543, },
  { start: 12549, end: 12591, },
  { start: 12593, end: 12686, },
  { start: 12704, end: 12735, },
  { start: 12784, end: 12799, },
  { start: 13312, end: 19903, },
  { start: 19968, end: 42124, },
  { start: 42192, end: 42237, },
  { start: 42240, end: 42508, },
  { start: 42512, end: 42527, },
  { start: 42538, end: 42539, },
  { start: 42560, end: 42606, },
  { start: 42623, end: 42653, },
  { start: 42656, end: 42725, },
  { start: 42775, end: 42783, },
  { start: 42786, end: 42888, },
  { start: 42891, end: 42972, },
  { start: 42993, end: 43009, },
  { start: 43011, end: 43013, },
  { start: 43015, end: 43018, },
  { start: 43020, end: 43042, },
  { start: 43072, end: 43123, },
  { start: 43138, end: 43187, },
  { start: 43250, end: 43255, },
  { start: 43259, end: 43259, },
  { start: 43261, end: 43262, },
  { start: 43274, end: 43301, },
  { start: 43312, end: 43334, },
  { start: 43360, end: 43388, },
  { start: 43396, end: 43442, },
  { start: 43471, end: 43471, },
  { start: 43488, end: 43492, },
  { start: 43494, end: 43503, },
  { start: 43514, end: 43518, },
  { start: 43520, end: 43560, },
  { start: 43584, end: 43586, },
  { start: 43588, end: 43595, },
  { start: 43616, end: 43638, },
  { start: 43642, end: 43642, },
  { start: 43646, end: 43695, },
  { start: 43697, end: 43697, },
  { start: 43701, end: 43702, },
  { start: 43705, end: 43709, },
  { start: 43712, end: 43712, },
  { start: 43714, end: 43714, },
  { start: 43739, end: 43741, },
  { start: 43744, end: 43754, },
  { start: 43762, end: 43764, },
  { start: 43777, end: 43782, },
  { start: 43785, end: 43790, },
  { start: 43793, end: 43798, },
  { start: 43808, end: 43814, },
  { start: 43816, end: 43822, },
  { start: 43824, end: 43866, },
  { start: 43868, end: 43881, },
  { start: 43888, end: 44002, },
  { start: 44032, end: 55203, },
  { start: 55216, end: 55238, },
  { start: 55243, end: 55291, },
  { start: 63744, end: 64109, },
  { start: 64112, end: 64217, },
  { start: 64256, end: 64262, },
  { start: 64275, end: 64279, },
  { start: 64285, end: 64285, },
  { start: 64287, end: 64296, },
  { start: 64298, end: 64310, },
  { start: 64312, end: 64316, },
  { start: 64318, end: 64318, },
  { start: 64320, end: 64321, },
  { start: 64323, end: 64324, },
  { start: 64326, end: 64433, },
  { start: 64467, end: 64829, },
  { start: 64848, end: 64911, },
  { start: 64914, end: 64967, },
  { start: 65008, end: 65019, },
  { start: 65136, end: 65140, },
  { start: 65142, end: 65276, },
  { start: 65313, end: 65338, },
  { start: 65345, end: 65370, },
  { start: 65382, end: 65470, },
  { start: 65474, end: 65479, },
  { start: 65482, end: 65487, },
  { start: 65490, end: 65495, },
  { start: 65498, end: 65500, },
  { start: 65536, end: 65547, },
  { start: 65549, end: 65574, },
  { start: 65576, end: 65594, },
  { start: 65596, end: 65597, },
  { start: 65599, end: 65613, },
  { start: 65616, end: 65629, },
  { start: 65664, end: 65786, },
  { start: 66176, end: 66204, },
  { start: 66208, end: 66256, },
  { start: 66304, end: 66335, },
  { start: 66349, end: 66368, },
  { start: 66370, end: 66377, },
  { start: 66384, end: 66421, },
  { start: 66432, end: 66461, },
  { start: 66464, end: 66499, },
  { start: 66504, end: 66511, },
  { start: 66560, end: 66717, },
  { start: 66736, end: 66771, },
  { start: 66776, end: 66811, },
  { start: 66816, end: 66855, },
  { start: 66864, end: 66915, },
  { start: 66928, end: 66938, },
  { start: 66940, end: 66954, },
  { start: 66956, end: 66962, },
  { start: 66964, end: 66965, },
  { start: 66967, end: 66977, },
  { start: 66979, end: 66993, },
  { start: 66995, end: 67001, },
  { start: 67003, end: 67004, },
  { start: 67008, end: 67059, },
  { start: 67072, end: 67382, },
  { start: 67392, end: 67413, },
  { start: 67424, end: 67431, },
  { start: 67456, end: 67461, },
  { start: 67463, end: 67504, },
  { start: 67506, end: 67514, },
  { start: 67584, end: 67589, },
  { start: 67592, end: 67592, },
  { start: 67594, end: 67637, },
  { start: 67639, end: 67640, },
  { start: 67644, end: 67644, },
  { start: 67647, end: 67669, },
  { start: 67680, end: 67702, },
  { start: 67712, end: 67742, },
  { start: 67808, end: 67826, },
  { start: 67828, end: 67829, },
  { start: 67840, end: 67861, },
  { start: 67872, end: 67897, },
  { start: 67904, end: 67929, },
  { start: 67968, end: 68023, },
  { start: 68030, end: 68031, },
  { start: 68096, end: 68096, },
  { start: 68112, end: 68115, },
  { start: 68117, end: 68119, },
  { start: 68121, end: 68149, },
  { start: 68192, end: 68220, },
  { start: 68224, end: 68252, },
  { start: 68288, end: 68295, },
  { start: 68297, end: 68324, },
  { start: 68352, end: 68405, },
  { start: 68416, end: 68437, },
  { start: 68448, end: 68466, },
  { start: 68480, end: 68497, },
  { start: 68608, end: 68680, },
  { start: 68736, end: 68786, },
  { start: 68800, end: 68850, },
  { start: 68864, end: 68899, },
  { start: 68938, end: 68965, },
  { start: 68975, end: 68997, },
  { start: 69248, end: 69289, },
  { start: 69296, end: 69297, },
  { start: 69314, end: 69319, },
  { start: 69376, end: 69404, },
  { start: 69415, end: 69415, },
  { start: 69424, end: 69445, },
  { start: 69488, end: 69505, },
  { start: 69552, end: 69572, },
  { start: 69600, end: 69622, },
  { start: 69635, end: 69687, },
  { start: 69745, end: 69746, },
  { start: 69749, end: 69749, },
  { start: 69763, end: 69807, },
  { start: 69840, end: 69864, },
  { start: 69891, end: 69926, },
  { start: 69956, end: 69956, },
  { start: 69959, end: 69959, },
  { start: 69968, end: 70002, },
  { start: 70006, end: 70006, },
  { start: 70019, end: 70066, },
  { start: 70081, end: 70084, },
  { start: 70106, end: 70106, },
  { start: 70108, end: 70108, },
  { start: 70144, end: 70161, },
  { start: 70163, end: 70187, },
  { start: 70207, end: 70208, },
  { start: 70272, end: 70278, },
  { start: 70280, end: 70280, },
  { start: 70282, end: 70285, },
  { start: 70287, end: 70301, },
  { start: 70303, end: 70312, },
  { start: 70320, end: 70366, },
  { start: 70405, end: 70412, },
  { start: 70415, end: 70416, },
  { start: 70419, end: 70440, },
  { start: 70442, end: 70448, },
  { start: 70450, end: 70451, },
  { start: 70453, end: 70457, },
  { start: 70461, end: 70461, },
  { start: 70480, end: 70480, },
  { start: 70493, end: 70497, },
  { start: 70528, end: 70537, },
  { start: 70539, end: 70539, },
  { start: 70542, end: 70542, },
  { start: 70544, end: 70581, },
  { start: 70583, end: 70583, },
  { start: 70609, end: 70609, },
  { start: 70611, end: 70611, },
  { start: 70656, end: 70708, },
  { start: 70727, end: 70730, },
  { start: 70751, end: 70753, },
  { start: 70784, end: 70831, },
  { start: 70852, end: 70853, },
  { start: 70855, end: 70855, },
  { start: 71040, end: 71086, },
  { start: 71128, end: 71131, },
  { start: 71168, end: 71215, },
  { start: 71236, end: 71236, },
  { start: 71296, end: 71338, },
  { start: 71352, end: 71352, },
  { start: 71424, end: 71450, },
  { start: 71488, end: 71494, },
  { start: 71680, end: 71723, },
  { start: 71840, end: 71903, },
  { start: 71935, end: 71942, },
  { start: 71945, end: 71945, },
  { start: 71948, end: 71955, },
  { start: 71957, end: 71958, },
  { start: 71960, end: 71983, },
  { start: 71999, end: 71999, },
  { start: 72001, end: 72001, },
  { start: 72096, end: 72103, },
  { start: 72106, end: 72144, },
  { start: 72161, end: 72161, },
  { start: 72163, end: 72163, },
  { start: 72192, end: 72192, },
  { start: 72203, end: 72242, },
  { start: 72250, end: 72250, },
  { start: 72272, end: 72272, },
  { start: 72284, end: 72329, },
  { start: 72349, end: 72349, },
  { start: 72368, end: 72440, },
  { start: 72640, end: 72672, },
  { start: 72704, end: 72712, },
  { start: 72714, end: 72750, },
  { start: 72768, end: 72768, },
  { start: 72818, end: 72847, },
  { start: 72960, end: 72966, },
  { start: 72968, end: 72969, },
  { start: 72971, end: 73008, },
  { start: 73030, end: 73030, },
  { start: 73056, end: 73061, },
  { start: 73063, end: 73064, },
  { start: 73066, end: 73097, },
  { start: 73112, end: 73112, },
  { start: 73136, end: 73179, },
  { start: 73440, end: 73458, },
  { start: 73474, end: 73474, },
  { start: 73476, end: 73488, },
  { start: 73490, end: 73523, },
  { start: 73648, end: 73648, },
  { start: 73728, end: 74649, },
  { start: 74880, end: 75075, },
  { start: 77712, end: 77808, },
  { start: 77824, end: 78895, },
  { start: 78913, end: 78918, },
  { start: 78944, end: 82938, },
  { start: 82944, end: 83526, },
  { start: 90368, end: 90397, },
  { start: 92160, end: 92728, },
  { start: 92736, end: 92766, },
  { start: 92784, end: 92862, },
  { start: 92880, end: 92909, },
  { start: 92928, end: 92975, },
  { start: 92992, end: 92995, },
  { start: 93027, end: 93047, },
  { start: 93053, end: 93071, },
  { start: 93504, end: 93548, },
  { start: 93760, end: 93823, },
  { start: 93856, end: 93880, },
  { start: 93883, end: 93907, },
  { start: 93952, end: 94026, },
  { start: 94032, end: 94032, },
  { start: 94099, end: 94111, },
  { start: 94176, end: 94177, },
  { start: 94179, end: 94179, },
  { start: 94194, end: 94195, },
  { start: 94208, end: 101589, },
  { start: 101631, end: 101662, },
  { start: 101760, end: 101874, },
  { start: 110576, end: 110579, },
  { start: 110581, end: 110587, },
  { start: 110589, end: 110590, },
  { start: 110592, end: 110882, },
  { start: 110898, end: 110898, },
  { start: 110928, end: 110930, },
  { start: 110933, end: 110933, },
  { start: 110948, end: 110951, },
  { start: 110960, end: 111355, },
  { start: 113664, end: 113770, },
  { start: 113776, end: 113788, },
  { start: 113792, end: 113800, },
  { start: 113808, end: 113817, },
  { start: 119808, end: 119892, },
  { start: 119894, end: 119964, },
  { start: 119966, end: 119967, },
  { start: 119970, end: 119970, },
  { start: 119973, end: 119974, },
  { start: 119977, end: 119980, },
  { start: 119982, end: 119993, },
  { start: 119995, end: 119995, },
  { start: 119997, end: 120003, },
  { start: 120005, end: 120069, },
  { start: 120071, end: 120074, },
  { start: 120077, end: 120084, },
  { start: 120086, end: 120092, },
  { start: 120094, end: 120121, },
  { start: 120123, end: 120126, },
  { start: 120128, end: 120132, },
  { start: 120134, end: 120134, },
  { start: 120138, end: 120144, },
  { start: 120146, end: 120485, },
  { start: 120488, end: 120512, },
  { start: 120514, end: 120538, },
  { start: 120540, end: 120570, },
  { start: 120572, end: 120596, },
  { start: 120598, end: 120628, },
  { start: 120630, end: 120654, },
  { start: 120656, end: 120686, },
  { start: 120688, end: 120712, },
  { start: 120714, end: 120744, },
  { start: 120746, end: 120770, },
  { start: 120772, end: 120779, },
  { start: 122624, end: 122654, },
  { start: 122661, end: 122666, },
  { start: 122928, end: 122989, },
  { start: 123136, end: 123180, },
  { start: 123191, end: 123197, },
  { start: 123214, end: 123214, },
  { start: 123536, end: 123565, },
  { start: 123584, end: 123627, },
  { start: 124112, end: 124139, },
  { start: 124368, end: 124397, },
  { start: 124400, end: 124400, },
  { start: 124608, end: 124638, },
  { start: 124640, end: 124642, },
  { start: 124644, end: 124645, },
  { start: 124647, end: 124653, },
  { start: 124656, end: 124660, },
  { start: 124670, end: 124671, },
  { start: 124896, end: 124902, },
  { start: 124904, end: 124907, },
  { start: 124909, end: 124910, },
  { start: 124912, end: 124926, },
  { start: 124928, end: 125124, },
  { start: 125184, end: 125251, },
  { start: 125259, end: 125259, },
  { start: 126464, end: 126467, },
  { start: 126469, end: 126495, },
  { start: 126497, end: 126498, },
  { start: 126500, end: 126500, },
  { start: 126503, end: 126503, },
  { start: 126505, end: 126514, },
  { start: 126516, end: 126519, },
  { start: 126521, end: 126521, },
  { start: 126523, end: 126523, },
  { start: 126530, end: 126530, },
  { start: 126535, end: 126535, },
  { start: 126537, end: 126537, },
  { start: 126539, end: 126539, },
  { start: 126541, end: 126543, },
  { start: 126545, end: 126546, },
  { start: 126548, end: 126548, },
  { start: 126551, end: 126551, },
  { start: 126553, end: 126553, },
  { start: 126555, end: 126555, },
  { start: 126557, end: 126557, },
  { start: 126559, end: 126559, },
  { start: 126561, end: 126562, },
  { start: 126564, end: 126564, },
  { start: 126567, end: 126570, },
  { start: 126572, end: 126578, },
  { start: 126580, end: 126583, },
  { start: 126585, end: 126588, },
  { start: 126590, end: 126590, },
  { start: 126592, end: 126601, },
  { start: 126603, end: 126619, },
  { start: 126625, end: 126627, },
  { start: 126629, end: 126633, },
  { start: 126635, end: 126651, },
  { start: 131072, end: 173791, },
  { start: 173824, end: 178205, },
  { start: 178208, end: 183981, },
  { start: 183984, end: 191456, },
  { start: 191472, end: 192093, },
  { start: 194560, end: 195101, },
  { start: 196608, end: 201546, },
  { start: 201552, end: 210041, },
]

///|
let unicode_Ll : Array[UnicodeRange] = [
  { start: 97, end: 122, },
  { start: 181, end: 181, },
  { start: 223, end: 246, },
  { start: 248, end: 255, },
  { start: 257, end: 257, },
  { start: 259, end: 259, },
  { start: 261, end: 261, },
  { start: 263, end: 263, },
  { start: 265, end: 265, },
  { start: 267, end: 267, },
  { start: 269, end: 269, },
  { start: 271, end: 271, },
  { start: 273, end: 273, },
  { start: 275, end: 275, },
  { start: 277, end: 277, },
  { start: 279, end: 279, },
  { start: 281, end: 281, },
  { start: 283, end: 283, },
  { start: 285, end: 285, },
  { start: 287, end: 287, },
  { start: 289, end: 289, },
  { start: 291, end: 291, },
  { start: 293, end: 293, },
  { start: 295, end: 295, },
  { start: 297, end: 297, },
  { start: 299, end: 299, },
  { start: 301, end: 301, },
  { start: 303, end: 303, },
  { start: 305, end: 305, },
  { start: 307, end: 307, },
  { start: 309, end: 309, },
  { start: 311, end: 312, },
  { start: 314, end: 314, },
  { start: 316, end: 316, },
  { start: 318, end: 318, },
  { start: 320, end: 320, },
  { start: 322, end: 322, },
  { start: 324, end: 324, },
  { start: 326, end: 326, },
  { start: 328, end: 329, },
  { start: 331, end: 331, },
  { start: 333, end: 333, },
  { start: 335, end: 335, },
  { start: 337, end: 337, },
  { start: 339, end: 339, },
  { start: 341, end: 341, },
  { start: 343, end: 343, },
  { start: 345, end: 345, },
  { start: 347, end: 347, },
  { start: 349, end: 349, },
  { start: 351, end: 351, },
  { start: 353, end: 353, },
  { start: 355, end: 355, },
  { start: 357, end: 357, },
  { start: 359, end: 359, },
  { start: 361, end: 361, },
  { start: 363, end: 363, },
  { start: 365, end: 365, },
  { start: 367, end: 367, },
  { start: 369, end: 369, },
  { start: 371, end: 371, },
  { start: 373, end: 373, },
  { start: 375, end: 375, },
  { start: 378, end: 378, },
  { start: 380, end: 380, },
  { start: 382, end: 384, },
  { start: 387, end: 387, },
  { start: 389, end: 389, },
  { start: 392, end: 392, },
  { start: 396, end: 397, },
  { start: 402, end: 402, },
  { start: 405, end: 405, },
  { start: 409, end: 411, },
  { start: 414, end: 414, },
  { start: 417, end: 417, },
  { start: 419, end: 419, },
  { start: 421, end: 421, },
  { start: 424, end: 424, },
  { start: 426, end: 427, },
  { start: 429, end: 429, },
  { start: 432, end: 432, },
  { start: 436, end: 436, },
  { start: 438, end: 438, },
  { start: 441, end: 442, },
  { start: 445, end: 447, },
  { start: 454, end: 454, },
  { start: 457, end: 457, },
  { start: 460, end: 460, },
  { start: 462, end: 462, },
  { start: 464, end: 464, },
  { start: 466, end: 466, },
  { start: 468, end: 468, },
  { start: 470, end: 470, },
  { start: 472, end: 472, },
  { start: 474, end: 474, },
  { start: 476, end: 477, },
  { start: 479, end: 479, },
  { start: 481, end: 481, },
  { start: 483, end: 483, },
  { start: 485, end: 485, },
  { start: 487, end: 487, },
  { start: 489, end: 489, },
  { start: 491, end: 491, },
  { start: 493, end: 493, },
  { start: 495, end: 496, },
  { start: 499, end: 499, },
  { start: 501, end: 501, },
  { start: 505, end: 505, },
  { start: 507, end: 507, },
  { start: 509, end: 509, },
  { start: 511, end: 511, },
  { start: 513, end: 513, },
  { start: 515, end: 515, },
  { start: 517, end: 517, },
  { start: 519, end: 519, },
  { start: 521, end: 521, },
  { start: 523, end: 523, },
  { start: 525, end: 525, },
  { start: 527, end: 527, },
  { start: 529, end: 529, },
  { start: 531, end: 531, },
  { start: 533, end: 533, },
  { start: 535, end: 535, },
  { start: 537, end: 537, },
  { start: 539, end: 539, },
  { start: 541, end: 541, },
  { start: 543, end: 543, },
  { start: 545, end: 545, },
  { start: 547, end: 547, },
  { start: 549, end: 549, },
  { start: 551, end: 551, },
  { start: 553, end: 553, },
  { start: 555, end: 555, },
  { start: 557, end: 557, },
  { start: 559, end: 559, },
  { start: 561, end: 561, },
  { start: 563, end: 569, },
  { start: 572, end: 572, },
  { start: 575, end: 576, },
  { start: 578, end: 578, },
  { start: 583, end: 583, },
  { start: 585, end: 585, },
  { start: 587, end: 587, },
  { start: 589, end: 589, },
  { start: 591, end: 659, },
  { start: 662, end: 687, },
  { start: 881, end: 881, },
  { start: 883, end: 883, },
  { start: 887, end: 887, },
  { start: 891, end: 893, },
  { start: 912, end: 912, },
  { start: 940, end: 974, },
  { start: 976, end: 977, },
  { start: 981, end: 983, },
  { start: 985, end: 985, },
  { start: 987, end: 987, },
  { start: 989, end: 989, },
  { start: 991, end: 991, },
  { start: 993, end: 993, },
  { start: 995, end: 995, },
  { start: 997, end: 997, },
  { start: 999, end: 999, },
  { start: 1001, end: 1001, },
  { start: 1003, end: 1003, },
  { start: 1005, end: 1005, },
  { start: 1007, end: 1011, },
  { start: 1013, end: 1013, },
  { start: 1016, end: 1016, },
  { start: 1019, end: 1020, },
  { start: 1072, end: 1119, },
  { start: 1121, end: 1121, },
  { start: 1123, end: 1123, },
  { start: 1125, end: 1125, },
  { start: 1127, end: 1127, },
  { start: 1129, end: 1129, },
  { start: 1131, end: 1131, },
  { start: 1133, end: 1133, },
  { start: 1135, end: 1135, },
  { start: 1137, end: 1137, },
  { start: 1139, end: 1139, },
  { start: 1141, end: 1141, },
  { start: 1143, end: 1143, },
  { start: 1145, end: 1145, },
  { start: 1147, end: 1147, },
  { start: 1149, end: 1149, },
  { start: 1151, end: 1151, },
  { start: 1153, end: 1153, },
  { start: 1163, end: 1163, },
  { start: 1165, end: 1165, },
  { start: 1167, end: 1167, },
  { start: 1169, end: 1169, },
  { start: 1171, end: 1171, },
  { start: 1173, end: 1173, },
  { start: 1175, end: 1175, },
  { start: 1177, end: 1177, },
  { start: 1179, end: 1179, },
  { start: 1181, end: 1181, },
  { start: 1183, end: 1183, },
  { start: 1185, end: 1185, },
  { start: 1187, end: 1187, },
  { start: 1189, end: 1189, },
  { start: 1191, end: 1191, },
  { start: 1193, end: 1193, },
  { start: 1195, end: 1195, },
  { start: 1197, end: 1197, },
  { start: 1199, end: 1199, },
  { start: 1201, end: 1201, },
  { start: 1203, end: 1203, },
  { start: 1205, end: 1205, },
  { start: 1207, end: 1207, },
  { start: 1209, end: 1209, },
  { start: 1211, end: 1211, },
  { start: 1213, end: 1213, },
  { start: 1215, end: 1215, },
  { start: 1218, end: 1218, },
  { start: 1220, end: 1220, },
  { start: 1222, end: 1222, },
  { start: 1224, end: 1224, },
  { start: 1226, end: 1226, },
  { start: 1228, end: 1228, },
  { start: 1230, end: 1231, },
  { start: 1233, end: 1233, },
  { start: 1235, end: 1235, },
  { start: 1237, end: 1237, },
  { start: 1239, end: 1239, },
  { start: 1241, end: 1241, },
  { start: 1243, end: 1243, },
  { start: 1245, end: 1245, },
  { start: 1247, end: 1247, },
  { start: 1249, end: 1249, },
  { start: 1251, end: 1251, },
  { start: 1253, end: 1253, },
  { start: 1255, end: 1255, },
  { start: 1257, end: 1257, },
  { start: 1259, end: 1259, },
  { start: 1261, end: 1261, },
  { start: 1263, end: 1263, },
  { start: 1265, end: 1265, },
  { start: 1267, end: 1267, },
  { start: 1269, end: 1269, },
  { start: 1271, end: 1271, },
  { start: 1273, end: 1273, },
  { start: 1275, end: 1275, },
  { start: 1277, end: 1277, },
  { start: 1279, end: 1279, },
  { start: 1281, end: 1281, },
  { start: 1283, end: 1283, },
  { start: 1285, end: 1285, },
  { start: 1287, end: 1287, },
  { start: 1289, end: 1289, },
  { start: 1291, end: 1291, },
  { start: 1293, end: 1293, },
  { start: 1295, end: 1295, },
  { start: 1297, end: 1297, },
  { start: 1299, end: 1299, },
  { start: 1301, end: 1301, },
  { start: 1303, end: 1303, },
  { start: 1305, end: 1305, },
  { start: 1307, end: 1307, },
  { start: 1309, end: 1309, },
  { start: 1311, end: 1311, },
  { start: 1313, end: 1313, },
  { start: 1315, end: 1315, },
  { start: 1317, end: 1317, },
  { start: 1319, end: 1319, },
  { start: 1321, end: 1321, },
  { start: 1323, end: 1323, },
  { start: 1325, end: 1325, },
  { start: 1327, end: 1327, },
  { start: 1376, end: 1416, },
  { start: 4304, end: 4346, },
  { start: 4349, end: 4351, },
  { start: 5112, end: 5117, },
  { start: 7296, end: 7304, },
  { start: 7306, end: 7306, },
  { start: 7424, end: 7467, },
  { start: 7531, end: 7543, },
  { start: 7545, end: 7578, },
  { start: 7681, end: 7681, },
  { start: 7683, end: 7683, },
  { start: 7685, end: 7685, },
  { start: 7687, end: 7687, },
  { start: 7689, end: 7689, },
  { start: 7691, end: 7691, },
  { start: 7693, end: 7693, },
  { start: 7695, end: 7695, },
  { start: 7697, end: 7697, },
  { start: 7699, end: 7699, },
  { start: 7701, end: 7701, },
  { start: 7703, end: 7703, },
  { start: 7705, end: 7705, },
  { start: 7707, end: 7707, },
  { start: 7709, end: 7709, },
  { start: 7711, end: 7711, },
  { start: 7713, end: 7713, },
  { start: 7715, end: 7715, },
  { start: 7717, end: 7717, },
  { start: 7719, end: 7719, },
  { start: 7721, end: 7721, },
  { start: 7723, end: 7723, },
  { start: 7725, end: 7725, },
  { start: 7727, end: 7727, },
  { start: 7729, end: 7729, },
  { start: 7731, end: 7731, },
  { start: 7733, end: 7733, },
  { start: 7735, end: 7735, },
  { start: 7737, end: 7737, },
  { start: 7739, end: 7739, },
  { start: 7741, end: 7741, },
  { start: 7743, end: 7743, },
  { start: 7745, end: 7745, },
  { start: 7747, end: 7747, },
  { start: 7749, end: 7749, },
  { start: 7751, end: 7751, },
  { start: 7753, end: 7753, },
  { start: 7755, end: 7755, },
  { start: 7757, end: 7757, },
  { start: 7759, end: 7759, },
  { start: 7761, end: 7761, },
  { start: 7763, end: 7763, },
  { start: 7765, end: 7765, },
  { start: 7767, end: 7767, },
  { start: 7769, end: 7769, },
  { start: 7771, end: 7771, },
  { start: 7773, end: 7773, },
  { start: 7775, end: 7775, },
  { start: 7777, end: 7777, },
  { start: 7779, end: 7779, },
  { start: 7781, end: 7781, },
  { start: 7783, end: 7783, },
  { start: 7785, end: 7785, },
  { start: 7787, end: 7787, },
  { start: 7789, end: 7789, },
  { start: 7791, end: 7791, },
  { start: 7793, end: 7793, },
  { start: 7795, end: 7795, },
  { start: 7797, end: 7797, },
  { start: 7799, end: 7799, },
  { start: 7801, end: 7801, },
  { start: 7803, end: 7803, },
  { start: 7805, end: 7805, },
  { start: 7807, end: 7807, },
  { start: 7809, end: 7809, },
  { start: 7811, end: 7811, },
  { start: 7813, end: 7813, },
  { start: 7815, end: 7815, },
  { start: 7817, end: 7817, },
  { start: 7819, end: 7819, },
  { start: 7821, end: 7821, },
  { start: 7823, end: 7823, },
  { start: 7825, end: 7825, },
  { start: 7827, end: 7827, },
  { start: 7829, end: 7837, },
  { start: 7839, end: 7839, },
  { start: 7841, end: 7841, },
  { start: 7843, end: 7843, },
  { start: 7845, end: 7845, },
  { start: 7847, end: 7847, },
  { start: 7849, end: 7849, },
  { start: 7851, end: 7851, },
  { start: 7853, end: 7853, },
  { start: 7855, end: 7855, },
  { start: 7857, end: 7857, },
  { start: 7859, end: 7859, },
  { start: 7861, end: 7861, },
  { start: 7863, end: 7863, },
  { start: 7865, end: 7865, },
  { start: 7867, end: 7867, },
  { start: 7869, end: 7869, },
  { start: 7871, end: 7871, },
  { start: 7873, end: 7873, },
  { start: 7875, end: 7875, },
  { start: 7877, end: 7877, },
  { start: 7879, end: 7879, },
  { start: 7881, end: 7881, },
  { start: 7883, end: 7883, },
  { start: 7885, end: 7885, },
  { start: 7887, end: 7887, },
  { start: 7889, end: 7889, },
  { start: 7891, end: 7891, },
  { start: 7893, end: 7893, },
  { start: 7895, end: 7895, },
  { start: 7897, end: 7897, },
  { start: 7899, end: 7899, },
  { start: 7901, end: 7901, },
  { start: 7903, end: 7903, },
  { start: 7905, end: 7905, },
  { start: 7907, end: 7907, },
  { start: 7909, end: 7909, },
  { start: 7911, end: 7911, },
  { start: 7913, end: 7913, },
  { start: 7915, end: 7915, },
  { start: 7917, end: 7917, },
  { start: 7919, end: 7919, },
  { start: 7921, end: 7921, },
  { start: 7923, end: 7923, },
  { start: 7925, end: 7925, },
  { start: 7927, end: 7927, },
  { start: 7929, end: 7929, },
  { start: 7931, end: 7931, },
  { start: 7933, end: 7933, },
  { start: 7935, end: 7943, },
  { start: 7952, end: 7957, },
  { start: 7968, end: 7975, },
  { start: 7984, end: 7991, },
  { start: 8000, end: 8005, },
  { start: 8016, end: 8023, },
  { start: 8032, end: 8039, },
  { start: 8048, end: 8061, },
  { start: 8064, end: 8071, },
  { start: 8080, end: 8087, },
  { start: 8096, end: 8103, },
  { start: 8112, end: 8116, },
  { start: 8118, end: 8119, },
  { start: 8126, end: 8126, },
  { start: 8130, end: 8132, },
  { start: 8134, end: 8135, },
  { start: 8144, end: 8147, },
  { start: 8150, end: 8151, },
  { start: 8160, end: 8167, },
  { start: 8178, end: 8180, },
  { start: 8182, end: 8183, },
  { start: 8458, end: 8458, },
  { start: 8462, end: 8463, },
  { start: 8467, end: 8467, },
  { start: 8495, end: 8495, },
  { start: 8500, end: 8500, },
  { start: 8505, end: 8505, },
  { start: 8508, end: 8509, },
  { start: 8518, end: 8521, },
  { start: 8526, end: 8526, },
  { start: 8580, end: 8580, },
  { start: 11312, end: 11359, },
  { start: 11361, end: 11361, },
  { start: 11365, end: 11366, },
  { start: 11368, end: 11368, },
  { start: 11370, end: 11370, },
  { start: 11372, end: 11372, },
  { start: 11377, end: 11377, },
  { start: 11379, end: 11380, },
  { start: 11382, end: 11387, },
  { start: 11393, end: 11393, },
  { start: 11395, end: 11395, },
  { start: 11397, end: 11397, },
  { start: 11399, end: 11399, },
  { start: 11401, end: 11401, },
  { start: 11403, end: 11403, },
  { start: 11405, end: 11405, },
  { start: 11407, end: 11407, },
  { start: 11409, end: 11409, },
  { start: 11411, end: 11411, },
  { start: 11413, end: 11413, },
  { start: 11415, end: 11415, },
  { start: 11417, end: 11417, },
  { start: 11419, end: 11419, },
  { start: 11421, end: 11421, },
  { start: 11423, end: 11423, },
  { start: 11425, end: 11425, },
  { start: 11427, end: 11427, },
  { start: 11429, end: 11429, },
  { start: 11431, end: 11431, },
  { start: 11433, end: 11433, },
  { start: 11435, end: 11435, },
  { start: 11437, end: 11437, },
  { start: 11439, end: 11439, },
  { start: 11441, end: 11441, },
  { start: 11443, end: 11443, },
  { start: 11445, end: 11445, },
  { start: 11447, end: 11447, },
  { start: 11449, end: 11449, },
  { start: 11451, end: 11451, },
  { start: 11453, end: 11453, },
  { start: 11455, end: 11455, },
  { start: 11457, end: 11457, },
  { start: 11459, end: 11459, },
  { start: 11461, end: 11461, },
  { start: 11463, end: 11463, },
  { start: 11465, end: 11465, },
  { start: 11467, end: 11467, },
  { start: 11469, end: 11469, },
  { start: 11471, end: 11471, },
  { start: 11473, end: 11473, },
  { start: 11475, end: 11475, },
  { start: 11477, end: 11477, },
  { start: 11479, end: 11479, },
  { start: 11481, end: 11481, },
  { start: 11483, end: 11483, },
  { start: 11485, end: 11485, },
  { start: 11487, end: 11487, },
  { start: 11489, end: 11489, },
  { start: 11491, end: 11492, },
  { start: 11500, end: 11500, },
  { start: 11502, end: 11502, },
  { start: 11507, end: 11507, },
  { start: 11520, end: 11557, },
  { start: 11559, end: 11559, },
  { start: 11565, end: 11565, },
  { start: 42561, end: 42561, },
  { start: 42563, end: 42563, },
  { start: 42565, end: 42565, },
  { start: 42567, end: 42567, },
  { start: 42569, end: 42569, },
  { start: 42571, end: 42571, },
  { start: 42573, end: 42573, },
  { start: 42575, end: 42575, },
  { start: 42577, end: 42577, },
  { start: 42579, end: 42579, },
  { start: 42581, end: 42581, },
  { start: 42583, end: 42583, },
  { start: 42585, end: 42585, },
  { start: 42587, end: 42587, },
  { start: 42589, end: 42589, },
  { start: 42591, end: 42591, },
  { start: 42593, end: 42593, },
  { start: 42595, end: 42595, },
  { start: 42597, end: 42597, },
  { start: 42599, end: 42599, },
  { start: 42601, end: 42601, },
  { start: 42603, end: 42603, },
  { start: 42605, end: 42605, },
  { start: 42625, end: 42625, },
  { start: 42627, end: 42627, },
  { start: 42629, end: 42629, },
  { start: 42631, end: 42631, },
  { start: 42633, end: 42633, },
  { start: 42635, end: 42635, },
  { start: 42637, end: 42637, },
  { start: 42639, end: 42639, },
  { start: 42641, end: 42641, },
  { start: 42643, end: 42643, },
  { start: 42645, end: 42645, },
  { start: 42647, end: 42647, },
  { start: 42649, end: 42649, },
  { start: 42651, end: 42651, },
  { start: 42787, end: 42787, },
  { start: 42789, end: 42789, },
  { start: 42791, end: 42791, },
  { start: 42793, end: 42793, },
  { start: 42795, end: 42795, },
  { start: 42797, end: 42797, },
  { start: 42799, end: 42801, },
  { start: 42803, end: 42803, },
  { start: 42805, end: 42805, },
  { start: 42807, end: 42807, },
  { start: 42809, end: 42809, },
  { start: 42811, end: 42811, },
  { start: 42813, end: 42813, },
  { start: 42815, end: 42815, },
  { start: 42817, end: 42817, },
  { start: 42819, end: 42819, },
  { start: 42821, end: 42821, },
  { start: 42823, end: 42823, },
  { start: 42825, end: 42825, },
  { start: 42827, end: 42827, },
  { start: 42829, end: 42829, },
  { start: 42831, end: 42831, },
  { start: 42833, end: 42833, },
  { start: 42835, end: 42835, },
  { start: 42837, end: 42837, },
  { start: 42839, end: 42839, },
  { start: 42841, end: 42841, },
  { start: 42843, end: 42843, },
  { start: 42845, end: 42845, },
  { start: 42847, end: 42847, },
  { start: 42849, end: 42849, },
  { start: 42851, end: 42851, },
  { start: 42853, end: 42853, },
  { start: 42855, end: 42855, },
  { start: 42857, end: 42857, },
  { start: 42859, end: 42859, },
  { start: 42861, end: 42861, },
  { start: 42863, end: 42863, },
  { start: 42865, end: 42872, },
  { start: 42874, end: 42874, },
  { start: 42876, end: 42876, },
  { start: 42879, end: 42879, },
  { start: 42881, end: 42881, },
  { start: 42883, end: 42883, },
  { start: 42885, end: 42885, },
  { start: 42887, end: 42887, },
  { start: 42892, end: 42892, },
  { start: 42894, end: 42894, },
  { start: 42897, end: 42897, },
  { start: 42899, end: 42901, },
  { start: 42903, end: 42903, },
  { start: 42905, end: 42905, },
  { start: 42907, end: 42907, },
  { start: 42909, end: 42909, },
  { start: 42911, end: 42911, },
  { start: 42913, end: 42913, },
  { start: 42915, end: 42915, },
  { start: 42917, end: 42917, },
  { start: 42919, end: 42919, },
  { start: 42921, end: 42921, },
  { start: 42927, end: 42927, },
  { start: 42933, end: 42933, },
  { start: 42935, end: 42935, },
  { start: 42937, end: 42937, },
  { start: 42939, end: 42939, },
  { start: 42941, end: 42941, },
  { start: 42943, end: 42943, },
  { start: 42945, end: 42945, },
  { start: 42947, end: 42947, },
  { start: 42952, end: 42952, },
  { start: 42954, end: 42954, },
  { start: 42957, end: 42957, },
  { start: 42959, end: 42959, },
  { start: 42961, end: 42961, },
  { start: 42963, end: 42963, },
  { start: 42965, end: 42965, },
  { start: 42967, end: 42967, },
  { start: 42969, end: 42969, },
  { start: 42971, end: 42971, },
  { start: 42998, end: 42998, },
  { start: 43002, end: 43002, },
  { start: 43824, end: 43866, },
  { start: 43872, end: 43880, },
  { start: 43888, end: 43967, },
  { start: 64256, end: 64262, },
  { start: 64275, end: 64279, },
  { start: 65345, end: 65370, },
  { start: 66600, end: 66639, },
  { start: 66776, end: 66811, },
  { start: 66967, end: 66977, },
  { start: 66979, end: 66993, },
  { start: 66995, end: 67001, },
  { start: 67003, end: 67004, },
  { start: 68800, end: 68850, },
  { start: 68976, end: 68997, },
  { start: 71872, end: 71903, },
  { start: 93792, end: 93823, },
  { start: 93883, end: 93907, },
  { start: 119834, end: 119859, },
  { start: 119886, end: 119892, },
  { start: 119894, end: 119911, },
  { start: 119938, end: 119963, },
  { start: 119990, end: 119993, },
  { start: 119995, end: 119995, },
  { start: 119997, end: 120003, },
  { start: 120005, end: 120015, },
  { start: 120042, end: 120067, },
  { start: 120094, end: 120119, },
  { start: 120146, end: 120171, },
  { start: 120198, end: 120223, },
  { start: 120250, end: 120275, },
  { start: 120302, end: 120327, },
  { start: 120354, end: 120379, },
  { start: 120406, end: 120431, },
  { start: 120458, end: 120485, },
  { start: 120514, end: 120538, },
  { start: 120540, end: 120545, },
  { start: 120572, end: 120596, },
  { start: 120598, end: 120603, },
  { start: 120630, end: 120654, },
  { start: 120656, end: 120661, },
  { start: 120688, end: 120712, },
  { start: 120714, end: 120719, },
  { start: 120746, end: 120770, },
  { start: 120772, end: 120777, },
  { start: 120779, end: 120779, },
  { start: 122624, end: 122633, },
  { start: 122635, end: 122654, },
  { start: 122661, end: 122666, },
  { start: 125218, end: 125251, },
]

///|
let unicode_Lm : Array[UnicodeRange] = [
  { start: 688, end: 705, },
  { start: 710, end: 721, },
  { start: 736, end: 740, },
  { start: 748, end: 748, },
  { start: 750, end: 750, },
  { start: 884, end: 884, },
  { start: 890, end: 890, },
  { start: 1369, end: 1369, },
  { start: 1600, end: 1600, },
  { start: 1765, end: 1766, },
  { start: 2036, end: 2037, },
  { start: 2042, end: 2042, },
  { start: 2074, end: 2074, },
  { start: 2084, end: 2084, },
  { start: 2088, end: 2088, },
  { start: 2249, end: 2249, },
  { start: 2417, end: 2417, },
  { start: 3654, end: 3654, },
  { start: 3782, end: 3782, },
  { start: 4348, end: 4348, },
  { start: 6103, end: 6103, },
  { start: 6211, end: 6211, },
  { start: 6823, end: 6823, },
  { start: 7288, end: 7293, },
  { start: 7468, end: 7530, },
  { start: 7544, end: 7544, },
  { start: 7579, end: 7615, },
  { start: 8305, end: 8305, },
  { start: 8319, end: 8319, },
  { start: 8336, end: 8348, },
  { start: 11388, end: 11389, },
  { start: 11631, end: 11631, },
  { start: 11823, end: 11823, },
  { start: 12293, end: 12293, },
  { start: 12337, end: 12341, },
  { start: 12347, end: 12347, },
  { start: 12445, end: 12446, },
  { start: 12540, end: 12542, },
  { start: 40981, end: 40981, },
  { start: 42232, end: 42237, },
  { start: 42508, end: 42508, },
  { start: 42623, end: 42623, },
  { start: 42652, end: 42653, },
  { start: 42775, end: 42783, },
  { start: 42864, end: 42864, },
  { start: 42888, end: 42888, },
  { start: 42993, end: 42996, },
  { start: 43000, end: 43001, },
  { start: 43471, end: 43471, },
  { start: 43494, end: 43494, },
  { start: 43632, end: 43632, },
  { start: 43741, end: 43741, },
  { start: 43763, end: 43764, },
  { start: 43868, end: 43871, },
  { start: 43881, end: 43881, },
  { start: 65392, end: 65392, },
  { start: 65438, end: 65439, },
  { start: 67456, end: 67461, },
  { start: 67463, end: 67504, },
  { start: 67506, end: 67514, },
  { start: 68942, end: 68942, },
  { start: 68975, end: 68975, },
  { start: 69317, end: 69317, },
  { start: 73177, end: 73177, },
  { start: 92992, end: 92995, },
  { start: 93504, end: 93506, },
  { start: 93547, end: 93548, },
  { start: 94099, end: 94111, },
  { start: 94176, end: 94177, },
  { start: 94179, end: 94179, },
  { start: 94194, end: 94195, },
  { start: 110576, end: 110579, },
  { start: 110581, end: 110587, },
  { start: 110589, end: 110590, },
  { start: 122928, end: 122989, },
  { start: 123191, end: 123197, },
  { start: 124139, end: 124139, },
  { start: 124671, end: 124671, },
  { start: 125259, end: 125259, },
]

///|
let unicode_Lo : Array[UnicodeRange] = [
  { start: 170, end: 170, },
  { start: 186, end: 186, },
  { start: 443, end: 443, },
  { start: 448, end: 451, },
  { start: 660, end: 661, },
  { start: 1488, end: 1514, },
  { start: 1519, end: 1522, },
  { start: 1568, end: 1599, },
  { start: 1601, end: 1610, },
  { start: 1646, end: 1647, },
  { start: 1649, end: 1747, },
  { start: 1749, end: 1749, },
  { start: 1774, end: 1775, },
  { start: 1786, end: 1788, },
  { start: 1791, end: 1791, },
  { start: 1808, end: 1808, },
  { start: 1810, end: 1839, },
  { start: 1869, end: 1957, },
  { start: 1969, end: 1969, },
  { start: 1994, end: 2026, },
  { start: 2048, end: 2069, },
  { start: 2112, end: 2136, },
  { start: 2144, end: 2154, },
  { start: 2160, end: 2183, },
  { start: 2185, end: 2191, },
  { start: 2208, end: 2248, },
  { start: 2308, end: 2361, },
  { start: 2365, end: 2365, },
  { start: 2384, end: 2384, },
  { start: 2392, end: 2401, },
  { start: 2418, end: 2432, },
  { start: 2437, end: 2444, },
  { start: 2447, end: 2448, },
  { start: 2451, end: 2472, },
  { start: 2474, end: 2480, },
  { start: 2482, end: 2482, },
  { start: 2486, end: 2489, },
  { start: 2493, end: 2493, },
  { start: 2510, end: 2510, },
  { start: 2524, end: 2525, },
  { start: 2527, end: 2529, },
  { start: 2544, end: 2545, },
  { start: 2556, end: 2556, },
  { start: 2565, end: 2570, },
  { start: 2575, end: 2576, },
  { start: 2579, end: 2600, },
  { start: 2602, end: 2608, },
  { start: 2610, end: 2611, },
  { start: 2613, end: 2614, },
  { start: 2616, end: 2617, },
  { start: 2649, end: 2652, },
  { start: 2654, end: 2654, },
  { start: 2674, end: 2676, },
  { start: 2693, end: 2701, },
  { start: 2703, end: 2705, },
  { start: 2707, end: 2728, },
  { start: 2730, end: 2736, },
  { start: 2738, end: 2739, },
  { start: 2741, end: 2745, },
  { start: 2749, end: 2749, },
  { start: 2768, end: 2768, },
  { start: 2784, end: 2785, },
  { start: 2809, end: 2809, },
  { start: 2821, end: 2828, },
  { start: 2831, end: 2832, },
  { start: 2835, end: 2856, },
  { start: 2858, end: 2864, },
  { start: 2866, end: 2867, },
  { start: 2869, end: 2873, },
  { start: 2877, end: 2877, },
  { start: 2908, end: 2909, },
  { start: 2911, end: 2913, },
  { start: 2929, end: 2929, },
  { start: 2947, end: 2947, },
  { start: 2949, end: 2954, },
  { start: 2958, end: 2960, },
  { start: 2962, end: 2965, },
  { start: 2969, end: 2970, },
  { start: 2972, end: 2972, },
  { start: 2974, end: 2975, },
  { start: 2979, end: 2980, },
  { start: 2984, end: 2986, },
  { start: 2990, end: 3001, },
  { start: 3024, end: 3024, },
  { start: 3077, end: 3084, },
  { start: 3086, end: 3088, },
  { start: 3090, end: 3112, },
  { start: 3114, end: 3129, },
  { start: 3133, end: 3133, },
  { start: 3160, end: 3162, },
  { start: 3164, end: 3165, },
  { start: 3168, end: 3169, },
  { start: 3200, end: 3200, },
  { start: 3205, end: 3212, },
  { start: 3214, end: 3216, },
  { start: 3218, end: 3240, },
  { start: 3242, end: 3251, },
  { start: 3253, end: 3257, },
  { start: 3261, end: 3261, },
  { start: 3292, end: 3294, },
  { start: 3296, end: 3297, },
  { start: 3313, end: 3314, },
  { start: 3332, end: 3340, },
  { start: 3342, end: 3344, },
  { start: 3346, end: 3386, },
  { start: 3389, end: 3389, },
  { start: 3406, end: 3406, },
  { start: 3412, end: 3414, },
  { start: 3423, end: 3425, },
  { start: 3450, end: 3455, },
  { start: 3461, end: 3478, },
  { start: 3482, end: 3505, },
  { start: 3507, end: 3515, },
  { start: 3517, end: 3517, },
  { start: 3520, end: 3526, },
  { start: 3585, end: 3632, },
  { start: 3634, end: 3635, },
  { start: 3648, end: 3653, },
  { start: 3713, end: 3714, },
  { start: 3716, end: 3716, },
  { start: 3718, end: 3722, },
  { start: 3724, end: 3747, },
  { start: 3749, end: 3749, },
  { start: 3751, end: 3760, },
  { start: 3762, end: 3763, },
  { start: 3773, end: 3773, },
  { start: 3776, end: 3780, },
  { start: 3804, end: 3807, },
  { start: 3840, end: 3840, },
  { start: 3904, end: 3911, },
  { start: 3913, end: 3948, },
  { start: 3976, end: 3980, },
  { start: 4096, end: 4138, },
  { start: 4159, end: 4159, },
  { start: 4176, end: 4181, },
  { start: 4186, end: 4189, },
  { start: 4193, end: 4193, },
  { start: 4197, end: 4198, },
  { start: 4206, end: 4208, },
  { start: 4213, end: 4225, },
  { start: 4238, end: 4238, },
  { start: 4352, end: 4680, },
  { start: 4682, end: 4685, },
  { start: 4688, end: 4694, },
  { start: 4696, end: 4696, },
  { start: 4698, end: 4701, },
  { start: 4704, end: 4744, },
  { start: 4746, end: 4749, },
  { start: 4752, end: 4784, },
  { start: 4786, end: 4789, },
  { start: 4792, end: 4798, },
  { start: 4800, end: 4800, },
  { start: 4802, end: 4805, },
  { start: 4808, end: 4822, },
  { start: 4824, end: 4880, },
  { start: 4882, end: 4885, },
  { start: 4888, end: 4954, },
  { start: 4992, end: 5007, },
  { start: 5121, end: 5740, },
  { start: 5743, end: 5759, },
  { start: 5761, end: 5786, },
  { start: 5792, end: 5866, },
  { start: 5873, end: 5880, },
  { start: 5888, end: 5905, },
  { start: 5919, end: 5937, },
  { start: 5952, end: 5969, },
  { start: 5984, end: 5996, },
  { start: 5998, end: 6000, },
  { start: 6016, end: 6067, },
  { start: 6108, end: 6108, },
  { start: 6176, end: 6210, },
  { start: 6212, end: 6264, },
  { start: 6272, end: 6276, },
  { start: 6279, end: 6312, },
  { start: 6314, end: 6314, },
  { start: 6320, end: 6389, },
  { start: 6400, end: 6430, },
  { start: 6480, end: 6509, },
  { start: 6512, end: 6516, },
  { start: 6528, end: 6571, },
  { start: 6576, end: 6601, },
  { start: 6656, end: 6678, },
  { start: 6688, end: 6740, },
  { start: 6917, end: 6963, },
  { start: 6981, end: 6988, },
  { start: 7043, end: 7072, },
  { start: 7086, end: 7087, },
  { start: 7098, end: 7141, },
  { start: 7168, end: 7203, },
  { start: 7245, end: 7247, },
  { start: 7258, end: 7287, },
  { start: 7401, end: 7404, },
  { start: 7406, end: 7411, },
  { start: 7413, end: 7414, },
  { start: 7418, end: 7418, },
  { start: 8501, end: 8504, },
  { start: 11568, end: 11623, },
  { start: 11648, end: 11670, },
  { start: 11680, end: 11686, },
  { start: 11688, end: 11694, },
  { start: 11696, end: 11702, },
  { start: 11704, end: 11710, },
  { start: 11712, end: 11718, },
  { start: 11720, end: 11726, },
  { start: 11728, end: 11734, },
  { start: 11736, end: 11742, },
  { start: 12294, end: 12294, },
  { start: 12348, end: 12348, },
  { start: 12353, end: 12438, },
  { start: 12447, end: 12447, },
  { start: 12449, end: 12538, },
  { start: 12543, end: 12543, },
  { start: 12549, end: 12591, },
  { start: 12593, end: 12686, },
  { start: 12704, end: 12735, },
  { start: 12784, end: 12799, },
  { start: 13312, end: 19903, },
  { start: 19968, end: 40980, },
  { start: 40982, end: 42124, },
  { start: 42192, end: 42231, },
  { start: 42240, end: 42507, },
  { start: 42512, end: 42527, },
  { start: 42538, end: 42539, },
  { start: 42606, end: 42606, },
  { start: 42656, end: 42725, },
  { start: 42895, end: 42895, },
  { start: 42999, end: 42999, },
  { start: 43003, end: 43009, },
  { start: 43011, end: 43013, },
  { start: 43015, end: 43018, },
  { start: 43020, end: 43042, },
  { start: 43072, end: 43123, },
  { start: 43138, end: 43187, },
  { start: 43250, end: 43255, },
  { start: 43259, end: 43259, },
  { start: 43261, end: 43262, },
  { start: 43274, end: 43301, },
  { start: 43312, end: 43334, },
  { start: 43360, end: 43388, },
  { start: 43396, end: 43442, },
  { start: 43488, end: 43492, },
  { start: 43495, end: 43503, },
  { start: 43514, end: 43518, },
  { start: 43520, end: 43560, },
  { start: 43584, end: 43586, },
  { start: 43588, end: 43595, },
  { start: 43616, end: 43631, },
  { start: 43633, end: 43638, },
  { start: 43642, end: 43642, },
  { start: 43646, end: 43695, },
  { start: 43697, end: 43697, },
  { start: 43701, end: 43702, },
  { start: 43705, end: 43709, },
  { start: 43712, end: 43712, },
  { start: 43714, end: 43714, },
  { start: 43739, end: 43740, },
  { start: 43744, end: 43754, },
  { start: 43762, end: 43762, },
  { start: 43777, end: 43782, },
  { start: 43785, end: 43790, },
  { start: 43793, end: 43798, },
  { start: 43808, end: 43814, },
  { start: 43816, end: 43822, },
  { start: 43968, end: 44002, },
  { start: 44032, end: 55203, },
  { start: 55216, end: 55238, },
  { start: 55243, end: 55291, },
  { start: 63744, end: 64109, },
  { start: 64112, end: 64217, },
  { start: 64285, end: 64285, },
  { start: 64287, end: 64296, },
  { start: 64298, end: 64310, },
  { start: 64312, end: 64316, },
  { start: 64318, end: 64318, },
  { start: 64320, end: 64321, },
  { start: 64323, end: 64324, },
  { start: 64326, end: 64433, },
  { start: 64467, end: 64829, },
  { start: 64848, end: 64911, },
  { start: 64914, end: 64967, },
  { start: 65008, end: 65019, },
  { start: 65136, end: 65140, },
  { start: 65142, end: 65276, },
  { start: 65382, end: 65391, },
  { start: 65393, end: 65437, },
  { start: 65440, end: 65470, },
  { start: 65474, end: 65479, },
  { start: 65482, end: 65487, },
  { start: 65490, end: 65495, },
  { start: 65498, end: 65500, },
  { start: 65536, end: 65547, },
  { start: 65549, end: 65574, },
  { start: 65576, end: 65594, },
  { start: 65596, end: 65597, },
  { start: 65599, end: 65613, },
  { start: 65616, end: 65629, },
  { start: 65664, end: 65786, },
  { start: 66176, end: 66204, },
  { start: 66208, end: 66256, },
  { start: 66304, end: 66335, },
  { start: 66349, end: 66368, },
  { start: 66370, end: 66377, },
  { start: 66384, end: 66421, },
  { start: 66432, end: 66461, },
  { start: 66464, end: 66499, },
  { start: 66504, end: 66511, },
  { start: 66640, end: 66717, },
  { start: 66816, end: 66855, },
  { start: 66864, end: 66915, },
  { start: 67008, end: 67059, },
  { start: 67072, end: 67382, },
  { start: 67392, end: 67413, },
  { start: 67424, end: 67431, },
  { start: 67584, end: 67589, },
  { start: 67592, end: 67592, },
  { start: 67594, end: 67637, },
  { start: 67639, end: 67640, },
  { start: 67644, end: 67644, },
  { start: 67647, end: 67669, },
  { start: 67680, end: 67702, },
  { start: 67712, end: 67742, },
  { start: 67808, end: 67826, },
  { start: 67828, end: 67829, },
  { start: 67840, end: 67861, },
  { start: 67872, end: 67897, },
  { start: 67904, end: 67929, },
  { start: 67968, end: 68023, },
  { start: 68030, end: 68031, },
  { start: 68096, end: 68096, },
  { start: 68112, end: 68115, },
  { start: 68117, end: 68119, },
  { start: 68121, end: 68149, },
  { start: 68192, end: 68220, },
  { start: 68224, end: 68252, },
  { start: 68288, end: 68295, },
  { start: 68297, end: 68324, },
  { start: 68352, end: 68405, },
  { start: 68416, end: 68437, },
  { start: 68448, end: 68466, },
  { start: 68480, end: 68497, },
  { start: 68608, end: 68680, },
  { start: 68864, end: 68899, },
  { start: 68938, end: 68941, },
  { start: 68943, end: 68943, },
  { start: 69248, end: 69289, },
  { start: 69296, end: 69297, },
  { start: 69314, end: 69316, },
  { start: 69318, end: 69319, },
  { start: 69376, end: 69404, },
  { start: 69415, end: 69415, },
  { start: 69424, end: 69445, },
  { start: 69488, end: 69505, },
  { start: 69552, end: 69572, },
  { start: 69600, end: 69622, },
  { start: 69635, end: 69687, },
  { start: 69745, end: 69746, },
  { start: 69749, end: 69749, },
  { start: 69763, end: 69807, },
  { start: 69840, end: 69864, },
  { start: 69891, end: 69926, },
  { start: 69956, end: 69956, },
  { start: 69959, end: 69959, },
  { start: 69968, end: 70002, },
  { start: 70006, end: 70006, },
  { start: 70019, end: 70066, },
  { start: 70081, end: 70084, },
  { start: 70106, end: 70106, },
  { start: 70108, end: 70108, },
  { start: 70144, end: 70161, },
  { start: 70163, end: 70187, },
  { start: 70207, end: 70208, },
  { start: 70272, end: 70278, },
  { start: 70280, end: 70280, },
  { start: 70282, end: 70285, },
  { start: 70287, end: 70301, },
  { start: 70303, end: 70312, },
  { start: 70320, end: 70366, },
  { start: 70405, end: 70412, },
  { start: 70415, end: 70416, },
  { start: 70419, end: 70440, },
  { start: 70442, end: 70448, },
  { start: 70450, end: 70451, },
  { start: 70453, end: 70457, },
  { start: 70461, end: 70461, },
  { start: 70480, end: 70480, },
  { start: 70493, end: 70497, },
  { start: 70528, end: 70537, },
  { start: 70539, end: 70539, },
  { start: 70542, end: 70542, },
  { start: 70544, end: 70581, },
  { start: 70583, end: 70583, },
  { start: 70609, end: 70609, },
  { start: 70611, end: 70611, },
  { start: 70656, end: 70708, },
  { start: 70727, end: 70730, },
  { start: 70751, end: 70753, },
  { start: 70784, end: 70831, },
  { start: 70852, end: 70853, },
  { start: 70855, end: 70855, },
  { start: 71040, end: 71086, },
  { start: 71128, end: 71131, },
  { start: 71168, end: 71215, },
  { start: 71236, end: 71236, },
  { start: 71296, end: 71338, },
  { start: 71352, end: 71352, },
  { start: 71424, end: 71450, },
  { start: 71488, end: 71494, },
  { start: 71680, end: 71723, },
  { start: 71935, end: 71942, },
  { start: 71945, end: 71945, },
  { start: 71948, end: 71955, },
  { start: 71957, end: 71958, },
  { start: 71960, end: 71983, },
  { start: 71999, end: 71999, },
  { start: 72001, end: 72001, },
  { start: 72096, end: 72103, },
  { start: 72106, end: 72144, },
  { start: 72161, end: 72161, },
  { start: 72163, end: 72163, },
  { start: 72192, end: 72192, },
  { start: 72203, end: 72242, },
  { start: 72250, end: 72250, },
  { start: 72272, end: 72272, },
  { start: 72284, end: 72329, },
  { start: 72349, end: 72349, },
  { start: 72368, end: 72440, },
  { start: 72640, end: 72672, },
  { start: 72704, end: 72712, },
  { start: 72714, end: 72750, },
  { start: 72768, end: 72768, },
  { start: 72818, end: 72847, },
  { start: 72960, end: 72966, },
  { start: 72968, end: 72969, },
  { start: 72971, end: 73008, },
  { start: 73030, end: 73030, },
  { start: 73056, end: 73061, },
  { start: 73063, end: 73064, },
  { start: 73066, end: 73097, },
  { start: 73112, end: 73112, },
  { start: 73136, end: 73176, },
  { start: 73178, end: 73179, },
  { start: 73440, end: 73458, },
  { start: 73474, end: 73474, },
  { start: 73476, end: 73488, },
  { start: 73490, end: 73523, },
  { start: 73648, end: 73648, },
  { start: 73728, end: 74649, },
  { start: 74880, end: 75075, },
  { start: 77712, end: 77808, },
  { start: 77824, end: 78895, },
  { start: 78913, end: 78918, },
  { start: 78944, end: 82938, },
  { start: 82944, end: 83526, },
  { start: 90368, end: 90397, },
  { start: 92160, end: 92728, },
  { start: 92736, end: 92766, },
  { start: 92784, end: 92862, },
  { start: 92880, end: 92909, },
  { start: 92928, end: 92975, },
  { start: 93027, end: 93047, },
  { start: 93053, end: 93071, },
  { start: 93507, end: 93546, },
  { start: 93952, end: 94026, },
  { start: 94032, end: 94032, },
  { start: 94208, end: 101589, },
  { start: 101631, end: 101662, },
  { start: 101760, end: 101874, },
  { start: 110592, end: 110882, },
  { start: 110898, end: 110898, },
  { start: 110928, end: 110930, },
  { start: 110933, end: 110933, },
  { start: 110948, end: 110951, },
  { start: 110960, end: 111355, },
  { start: 113664, end: 113770, },
  { start: 113776, end: 113788, },
  { start: 113792, end: 113800, },
  { start: 113808, end: 113817, },
  { start: 122634, end: 122634, },
  { start: 123136, end: 123180, },
  { start: 123214, end: 123214, },
  { start: 123536, end: 123565, },
  { start: 123584, end: 123627, },
  { start: 124112, end: 124138, },
  { start: 124368, end: 124397, },
  { start: 124400, end: 124400, },
  { start: 124608, end: 124638, },
  { start: 124640, end: 124642, },
  { start: 124644, end: 124645, },
  { start: 124647, end: 124653, },
  { start: 124656, end: 124660, },
  { start: 124670, end: 124670, },
  { start: 124896, end: 124902, },
  { start: 124904, end: 124907, },
  { start: 124909, end: 124910, },
  { start: 124912, end: 124926, },
  { start: 124928, end: 125124, },
  { start: 126464, end: 126467, },
  { start: 126469, end: 126495, },
  { start: 126497, end: 126498, },
  { start: 126500, end: 126500, },
  { start: 126503, end: 126503, },
  { start: 126505, end: 126514, },
  { start: 126516, end: 126519, },
  { start: 126521, end: 126521, },
  { start: 126523, end: 126523, },
  { start: 126530, end: 126530, },
  { start: 126535, end: 126535, },
  { start: 126537, end: 126537, },
  { start: 126539, end: 126539, },
  { start: 126541, end: 126543, },
  { start: 126545, end: 126546, },
  { start: 126548, end: 126548, },
  { start: 126551, end: 126551, },
  { start: 126553, end: 126553, },
  { start: 126555, end: 126555, },
  { start: 126557, end: 126557, },
  { start: 126559, end: 126559, },
  { start: 126561, end: 126562, },
  { start: 126564, end: 126564, },
  { start: 126567, end: 126570, },
  { start: 126572, end: 126578, },
  { start: 126580, end: 126583, },
  { start: 126585, end: 126588, },
  { start: 126590, end: 126590, },
  { start: 126592, end: 126601, },
  { start: 126603, end: 126619, },
  { start: 126625, end: 126627, },
  { start: 126629, end: 126633, },
  { start: 126635, end: 126651, },
  { start: 131072, end: 173791, },
  { start: 173824, end: 178205, },
  { start: 178208, end: 183981, },
  { start: 183984, end: 191456, },
  { start: 191472, end: 192093, },
  { start: 194560, end: 195101, },
  { start: 196608, end: 201546, },
  { start: 201552, end: 210041, },
]

///|
let unicode_Lt : Array[UnicodeRange] = [
  { start: 453, end: 453, },
  { start: 456, end: 456, },
  { start: 459, end: 459, },
  { start: 498, end: 498, },
  { start: 8072, end: 8079, },
  { start: 8088, end: 8095, },
  { start: 8104, end: 8111, },
  { start: 8124, end: 8124, },
  { start: 8140, end: 8140, },
  { start: 8188, end: 8188, },
]

///|
let unicode_Lu : Array[UnicodeRange] = [
  { start: 65, end: 90, },
  { start: 192, end: 214, },
  { start: 216, end: 222, },
  { start: 256, end: 256, },
  { start: 258, end: 258, },
  { start: 260, end: 260, },
  { start: 262, end: 262, },
  { start: 264, end: 264, },
  { start: 266, end: 266, },
  { start: 268, end: 268, },
  { start: 270, end: 270, },
  { start: 272, end: 272, },
  { start: 274, end: 274, },
  { start: 276, end: 276, },
  { start: 278, end: 278, },
  { start: 280, end: 280, },
  { start: 282, end: 282, },
  { start: 284, end: 284, },
  { start: 286, end: 286, },
  { start: 288, end: 288, },
  { start: 290, end: 290, },
  { start: 292, end: 292, },
  { start: 294, end: 294, },
  { start: 296, end: 296, },
  { start: 298, end: 298, },
  { start: 300, end: 300, },
  { start: 302, end: 302, },
  { start: 304, end: 304, },
  { start: 306, end: 306, },
  { start: 308, end: 308, },
  { start: 310, end: 310, },
  { start: 313, end: 313, },
  { start: 315, end: 315, },
  { start: 317, end: 317, },
  { start: 319, end: 319, },
  { start: 321, end: 321, },
  { start: 323, end: 323, },
  { start: 325, end: 325, },
  { start: 327, end: 327, },
  { start: 330, end: 330, },
  { start: 332, end: 332, },
  { start: 334, end: 334, },
  { start: 336, end: 336, },
  { start: 338, end: 338, },
  { start: 340, end: 340, },
  { start: 342, end: 342, },
  { start: 344, end: 344, },
  { start: 346, end: 346, },
  { start: 348, end: 348, },
  { start: 350, end: 350, },
  { start: 352, end: 352, },
  { start: 354, end: 354, },
  { start: 356, end: 356, },
  { start: 358, end: 358, },
  { start: 360, end: 360, },
  { start: 362, end: 362, },
  { start: 364, end: 364, },
  { start: 366, end: 366, },
  { start: 368, end: 368, },
  { start: 370, end: 370, },
  { start: 372, end: 372, },
  { start: 374, end: 374, },
  { start: 376, end: 377, },
  { start: 379, end: 379, },
  { start: 381, end: 381, },
  { start: 385, end: 386, },
  { start: 388, end: 388, },
  { start: 390, end: 391, },
  { start: 393, end: 395, },
  { start: 398, end: 401, },
  { start: 403, end: 404, },
  { start: 406, end: 408, },
  { start: 412, end: 413, },
  { start: 415, end: 416, },
  { start: 418, end: 418, },
  { start: 420, end: 420, },
  { start: 422, end: 423, },
  { start: 425, end: 425, },
  { start: 428, end: 428, },
  { start: 430, end: 431, },
  { start: 433, end: 435, },
  { start: 437, end: 437, },
  { start: 439, end: 440, },
  { start: 444, end: 444, },
  { start: 452, end: 452, },
  { start: 455, end: 455, },
  { start: 458, end: 458, },
  { start: 461, end: 461, },
  { start: 463, end: 463, },
  { start: 465, end: 465, },
  { start: 467, end: 467, },
  { start: 469, end: 469, },
  { start: 471, end: 471, },
  { start: 473, end: 473, },
  { start: 475, end: 475, },
  { start: 478, end: 478, },
  { start: 480, end: 480, },
  { start: 482, end: 482, },
  { start: 484, end: 484, },
  { start: 486, end: 486, },
  { start: 488, end: 488, },
  { start: 490, end: 490, },
  { start: 492, end: 492, },
  { start: 494, end: 494, },
  { start: 497, end: 497, },
  { start: 500, end: 500, },
  { start: 502, end: 504, },
  { start: 506, end: 506, },
  { start: 508, end: 508, },
  { start: 510, end: 510, },
  { start: 512, end: 512, },
  { start: 514, end: 514, },
  { start: 516, end: 516, },
  { start: 518, end: 518, },
  { start: 520, end: 520, },
  { start: 522, end: 522, },
  { start: 524, end: 524, },
  { start: 526, end: 526, },
  { start: 528, end: 528, },
  { start: 530, end: 530, },
  { start: 532, end: 532, },
  { start: 534, end: 534, },
  { start: 536, end: 536, },
  { start: 538, end: 538, },
  { start: 540, end: 540, },
  { start: 542, end: 542, },
  { start: 544, end: 544, },
  { start: 546, end: 546, },
  { start: 548, end: 548, },
  { start: 550, end: 550, },
  { start: 552, end: 552, },
  { start: 554, end: 554, },
  { start: 556, end: 556, },
  { start: 558, end: 558, },
  { start: 560, end: 560, },
  { start: 562, end: 562, },
  { start: 570, end: 571, },
  { start: 573, end: 574, },
  { start: 577, end: 577, },
  { start: 579, end: 582, },
  { start: 584, end: 584, },
  { start: 586, end: 586, },
  { start: 588, end: 588, },
  { start: 590, end: 590, },
  { start: 880, end: 880, },
  { start: 882, end: 882, },
  { start: 886, end: 886, },
  { start: 895, end: 895, },
  { start: 902, end: 902, },
  { start: 904, end: 906, },
  { start: 908, end: 908, },
  { start: 910, end: 911, },
  { start: 913, end: 929, },
  { start: 931, end: 939, },
  { start: 975, end: 975, },
  { start: 978, end: 980, },
  { start: 984, end: 984, },
  { start: 986, end: 986, },
  { start: 988, end: 988, },
  { start: 990, end: 990, },
  { start: 992, end: 992, },
  { start: 994, end: 994, },
  { start: 996, end: 996, },
  { start: 998, end: 998, },
  { start: 1000, end: 1000, },
  { start: 1002, end: 1002, },
  { start: 1004, end: 1004, },
  { start: 1006, end: 1006, },
  { start: 1012, end: 1012, },
  { start: 1015, end: 1015, },
  { start: 1017, end: 1018, },
  { start: 1021, end: 1071, },
  { start: 1120, end: 1120, },
  { start: 1122, end: 1122, },
  { start: 1124, end: 1124, },
  { start: 1126, end: 1126, },
  { start: 1128, end: 1128, },
  { start: 1130, end: 1130, },
  { start: 1132, end: 1132, },
  { start: 1134, end: 1134, },
  { start: 1136, end: 1136, },
  { start: 1138, end: 1138, },
  { start: 1140, end: 1140, },
  { start: 1142, end: 1142, },
  { start: 1144, end: 1144, },
  { start: 1146, end: 1146, },
  { start: 1148, end: 1148, },
  { start: 1150, end: 1150, },
  { start: 1152, end: 1152, },
  { start: 1162, end: 1162, },
  { start: 1164, end: 1164, },
  { start: 1166, end: 1166, },
  { start: 1168, end: 1168, },
  { start: 1170, end: 1170, },
  { start: 1172, end: 1172, },
  { start: 1174, end: 1174, },
  { start: 1176, end: 1176, },
  { start: 1178, end: 1178, },
  { start: 1180, end: 1180, },
  { start: 1182, end: 1182, },
  { start: 1184, end: 1184, },
  { start: 1186, end: 1186, },
  { start: 1188, end: 1188, },
  { start: 1190, end: 1190, },
  { start: 1192, end: 1192, },
  { start: 1194, end: 1194, },
  { start: 1196, end: 1196, },
  { start: 1198, end: 1198, },
  { start: 1200, end: 1200, },
  { start: 1202, end: 1202, },
  { start: 1204, end: 1204, },
  { start: 1206, end: 1206, },
  { start: 1208, end: 1208, },
  { start: 1210, end: 1210, },
  { start: 1212, end: 1212, },
  { start: 1214, end: 1214, },
  { start: 1216, end: 1217, },
  { start: 1219, end: 1219, },
  { start: 1221, end: 1221, },
  { start: 1223, end: 1223, },
  { start: 1225, end: 1225, },
  { start: 1227, end: 1227, },
  { start: 1229, end: 1229, },
  { start: 1232, end: 1232, },
  { start: 1234, end: 1234, },
  { start: 1236, end: 1236, },
  { start: 1238, end: 1238, },
  { start: 1240, end: 1240, },
  { start: 1242, end: 1242, },
  { start: 1244, end: 1244, },
  { start: 1246, end: 1246, },
  { start: 1248, end: 1248, },
  { start: 1250, end: 1250, },
  { start: 1252, end: 1252, },
  { start: 1254, end: 1254, },
  { start: 1256, end: 1256, },
  { start: 1258, end: 1258, },
  { start: 1260, end: 1260, },
  { start: 1262, end: 1262, },
  { start: 1264, end: 1264, },
  { start: 1266, end: 1266, },
  { start: 1268, end: 1268, },
  { start: 1270, end: 1270, },
  { start: 1272, end: 1272, },
  { start: 1274, end: 1274, },
  { start: 1276, end: 1276, },
  { start: 1278, end: 1278, },
  { start: 1280, end: 1280, },
  { start: 1282, end: 1282, },
  { start: 1284, end: 1284, },
  { start: 1286, end: 1286, },
  { start: 1288, end: 1288, },
  { start: 1290, end: 1290, },
  { start: 1292, end: 1292, },
  { start: 1294, end: 1294, },
  { start: 1296, end: 1296, },
  { start: 1298, end: 1298, },
  { start: 1300, end: 1300, },
  { start: 1302, end: 1302, },
  { start: 1304, end: 1304, },
  { start: 1306, end: 1306, },
  { start: 1308, end: 1308, },
  { start: 1310, end: 1310, },
  { start: 1312, end: 1312, },
  { start: 1314, end: 1314, },
  { start: 1316, end: 1316, },
  { start: 1318, end: 1318, },
  { start: 1320, end: 1320, },
  { start: 1322, end: 1322, },
  { start: 1324, end: 1324, },
  { start: 1326, end: 1326, },
  { start: 1329, end: 1366, },
  { start: 4256, end: 4293, },
  { start: 4295, end: 4295, },
  { start: 4301, end: 4301, },
  { start: 5024, end: 5109, },
  { start: 7305, end: 7305, },
  { start: 7312, end: 7354, },
  { start: 7357, end: 7359, },
  { start: 7680, end: 7680, },
  { start: 7682, end: 7682, },
  { start: 7684, end: 7684, },
  { start: 7686, end: 7686, },
  { start: 7688, end: 7688, },
  { start: 7690, end: 7690, },
  { start: 7692, end: 7692, },
  { start: 7694, end: 7694, },
  { start: 7696, end: 7696, },
  { start: 7698, end: 7698, },
  { start: 7700, end: 7700, },
  { start: 7702, end: 7702, },
  { start: 7704, end: 7704, },
  { start: 7706, end: 7706, },
  { start: 7708, end: 7708, },
  { start: 7710, end: 7710, },
  { start: 7712, end: 7712, },
  { start: 7714, end: 7714, },
  { start: 7716, end: 7716, },
  { start: 7718, end: 7718, },
  { start: 7720, end: 7720, },
  { start: 7722, end: 7722, },
  { start: 7724, end: 7724, },
  { start: 7726, end: 7726, },
  { start: 7728, end: 7728, },
  { start: 7730, end: 7730, },
  { start: 7732, end: 7732, },
  { start: 7734, end: 7734, },
  { start: 7736, end: 7736, },
  { start: 7738, end: 7738, },
  { start: 7740, end: 7740, },
  { start: 7742, end: 7742, },
  { start: 7744, end: 7744, },
  { start: 7746, end: 7746, },
  { start: 7748, end: 7748, },
  { start: 7750, end: 7750, },
  { start: 7752, end: 7752, },
  { start: 7754, end: 7754, },
  { start: 7756, end: 7756, },
  { start: 7758, end: 7758, },
  { start: 7760, end: 7760, },
  { start: 7762, end: 7762, },
  { start: 7764, end: 7764, },
  { start: 7766, end: 7766, },
  { start: 7768, end: 7768, },
  { start: 7770, end: 7770, },
  { start: 7772, end: 7772, },
  { start: 7774, end: 7774, },
  { start: 7776, end: 7776, },
  { start: 7778, end: 7778, },
  { start: 7780, end: 7780, },
  { start: 7782, end: 7782, },
  { start: 7784, end: 7784, },
  { start: 7786, end: 7786, },
  { start: 7788, end: 7788, },
  { start: 7790, end: 7790, },
  { start: 7792, end: 7792, },
  { start: 7794, end: 7794, },
  { start: 7796, end: 7796, },
  { start: 7798, end: 7798, },
  { start: 7800, end: 7800, },
  { start: 7802, end: 7802, },
  { start: 7804, end: 7804, },
  { start: 7806, end: 7806, },
  { start: 7808, end: 7808, },
  { start: 7810, end: 7810, },
  { start: 7812, end: 7812, },
  { start: 7814, end: 7814, },
  { start: 7816, end: 7816, },
  { start: 7818, end: 7818, },
  { start: 7820, end: 7820, },
  { start: 7822, end: 7822, },
  { start: 7824, end: 7824, },
  { start: 7826, end: 7826, },
  { start: 7828, end: 7828, },
  { start: 7838, end: 7838, },
  { start: 7840, end: 7840, },
  { start: 7842, end: 7842, },
  { start: 7844, end: 7844, },
  { start: 7846, end: 7846, },
  { start: 7848, end: 7848, },
  { start: 7850, end: 7850, },
  { start: 7852, end: 7852, },
  { start: 7854, end: 7854, },
  { start: 7856, end: 7856, },
  { start: 7858, end: 7858, },
  { start: 7860, end: 7860, },
  { start: 7862, end: 7862, },
  { start: 7864, end: 7864, },
  { start: 7866, end: 7866, },
  { start: 7868, end: 7868, },
  { start: 7870, end: 7870, },
  { start: 7872, end: 7872, },
  { start: 7874, end: 7874, },
  { start: 7876, end: 7876, },
  { start: 7878, end: 7878, },
  { start: 7880, end: 7880, },
  { start: 7882, end: 7882, },
  { start: 7884, end: 7884, },
  { start: 7886, end: 7886, },
  { start: 7888, end: 7888, },
  { start: 7890, end: 7890, },
  { start: 7892, end: 7892, },
  { start: 7894, end: 7894, },
  { start: 7896, end: 7896, },
  { start: 7898, end: 7898, },
  { start: 7900, end: 7900, },
  { start: 7902, end: 7902, },
  { start: 7904, end: 7904, },
  { start: 7906, end: 7906, },
  { start: 7908, end: 7908, },
  { start: 7910, end: 7910, },
  { start: 7912, end: 7912, },
  { start: 7914, end: 7914, },
  { start: 7916, end: 7916, },
  { start: 7918, end: 7918, },
  { start: 7920, end: 7920, },
  { start: 7922, end: 7922, },
  { start: 7924, end: 7924, },
  { start: 7926, end: 7926, },
  { start: 7928, end: 7928, },
  { start: 7930, end: 7930, },
  { start: 7932, end: 7932, },
  { start: 7934, end: 7934, },
  { start: 7944, end: 7951, },
  { start: 7960, end: 7965, },
  { start: 7976, end: 7983, },
  { start: 7992, end: 7999, },
  { start: 8008, end: 8013, },
  { start: 8025, end: 8025, },
  { start: 8027, end: 8027, },
  { start: 8029, end: 8029, },
  { start: 8031, end: 8031, },
  { start: 8040, end: 8047, },
  { start: 8120, end: 8123, },
  { start: 8136, end: 8139, },
  { start: 8152, end: 8155, },
  { start: 8168, end: 8172, },
  { start: 8184, end: 8187, },
  { start: 8450, end: 8450, },
  { start: 8455, end: 8455, },
  { start: 8459, end: 8461, },
  { start: 8464, end: 8466, },
  { start: 8469, end: 8469, },
  { start: 8473, end: 8477, },
  { start: 8484, end: 8484, },
  { start: 8486, end: 8486, },
  { start: 8488, end: 8488, },
  { start: 8490, end: 8493, },
  { start: 8496, end: 8499, },
  { start: 8510, end: 8511, },
  { start: 8517, end: 8517, },
  { start: 8579, end: 8579, },
  { start: 11264, end: 11311, },
  { start: 11360, end: 11360, },
  { start: 11362, end: 11364, },
  { start: 11367, end: 11367, },
  { start: 11369, end: 11369, },
  { start: 11371, end: 11371, },
  { start: 11373, end: 11376, },
  { start: 11378, end: 11378, },
  { start: 11381, end: 11381, },
  { start: 11390, end: 11392, },
  { start: 11394, end: 11394, },
  { start: 11396, end: 11396, },
  { start: 11398, end: 11398, },
  { start: 11400, end: 11400, },
  { start: 11402, end: 11402, },
  { start: 11404, end: 11404, },
  { start: 11406, end: 11406, },
  { start: 11408, end: 11408, },
  { start: 11410, end: 11410, },
  { start: 11412, end: 11412, },
  { start: 11414, end: 11414, },
  { start: 11416, end: 11416, },
  { start: 11418, end: 11418, },
  { start: 11420, end: 11420, },
  { start: 11422, end: 11422, },
  { start: 11424, end: 11424, },
  { start: 11426, end: 11426, },
  { start: 11428, end: 11428, },
  { start: 11430, end: 11430, },
  { start: 11432, end: 11432, },
  { start: 11434, end: 11434, },
  { start: 11436, end: 11436, },
  { start: 11438, end: 11438, },
  { start: 11440, end: 11440, },
  { start: 11442, end: 11442, },
  { start: 11444, end: 11444, },
  { start: 11446, end: 11446, },
  { start: 11448, end: 11448, },
  { start: 11450, end: 11450, },
  { start: 11452, end: 11452, },
  { start: 11454, end: 11454, },
  { start: 11456, end: 11456, },
  { start: 11458, end: 11458, },
  { start: 11460, end: 11460, },
  { start: 11462, end: 11462, },
  { start: 11464, end: 11464, },
  { start: 11466, end: 11466, },
  { start: 11468, end: 11468, },
  { start: 11470, end: 11470, },
  { start: 11472, end: 11472, },
  { start: 11474, end: 11474, },
  { start: 11476, end: 11476, },
  { start: 11478, end: 11478, },
  { start: 11480, end: 11480, },
  { start: 11482, end: 11482, },
  { start: 11484, end: 11484, },
  { start: 11486, end: 11486, },
  { start: 11488, end: 11488, },
  { start: 11490, end: 11490, },
  { start: 11499, end: 11499, },
  { start: 11501, end: 11501, },
  { start: 11506, end: 11506, },
  { start: 42560, end: 42560, },
  { start: 42562, end: 42562, },
  { start: 42564, end: 42564, },
  { start: 42566, end: 42566, },
  { start: 42568, end: 42568, },
  { start: 42570, end: 42570, },
  { start: 42572, end: 42572, },
  { start: 42574, end: 42574, },
  { start: 42576, end: 42576, },
  { start: 42578, end: 42578, },
  { start: 42580, end: 42580, },
  { start: 42582, end: 42582, },
  { start: 42584, end: 42584, },
  { start: 42586, end: 42586, },
  { start: 42588, end: 42588, },
  { start: 42590, end: 42590, },
  { start: 42592, end: 42592, },
  { start: 42594, end: 42594, },
  { start: 42596, end: 42596, },
  { start: 42598, end: 42598, },
  { start: 42600, end: 42600, },
  { start: 42602, end: 42602, },
  { start: 42604, end: 42604, },
  { start: 42624, end: 42624, },
  { start: 42626, end: 42626, },
  { start: 42628, end: 42628, },
  { start: 42630, end: 42630, },
  { start: 42632, end: 42632, },
  { start: 42634, end: 42634, },
  { start: 42636, end: 42636, },
  { start: 42638, end: 42638, },
  { start: 42640, end: 42640, },
  { start: 42642, end: 42642, },
  { start: 42644, end: 42644, },
  { start: 42646, end: 42646, },
  { start: 42648, end: 42648, },
  { start: 42650, end: 42650, },
  { start: 42786, end: 42786, },
  { start: 42788, end: 42788, },
  { start: 42790, end: 42790, },
  { start: 42792, end: 42792, },
  { start: 42794, end: 42794, },
  { start: 42796, end: 42796, },
  { start: 42798, end: 42798, },
  { start: 42802, end: 42802, },
  { start: 42804, end: 42804, },
  { start: 42806, end: 42806, },
  { start: 42808, end: 42808, },
  { start: 42810, end: 42810, },
  { start: 42812, end: 42812, },
  { start: 42814, end: 42814, },
  { start: 42816, end: 42816, },
  { start: 42818, end: 42818, },
  { start: 42820, end: 42820, },
  { start: 42822, end: 42822, },
  { start: 42824, end: 42824, },
  { start: 42826, end: 42826, },
  { start: 42828, end: 42828, },
  { start: 42830, end: 42830, },
  { start: 42832, end: 42832, },
  { start: 42834, end: 42834, },
  { start: 42836, end: 42836, },
  { start: 42838, end: 42838, },
  { start: 42840, end: 42840, },
  { start: 42842, end: 42842, },
  { start: 42844, end: 42844, },
  { start: 42846, end: 42846, },
  { start: 42848, end: 42848, },
  { start: 42850, end: 42850, },
  { start: 42852, end: 42852, },
  { start: 42854, end: 42854, },
  { start: 42856, end: 42856, },
  { start: 42858, end: 42858, },
  { start: 42860, end: 42860, },
  { start: 42862, end: 42862, },
  { start: 42873, end: 42873, },
  { start: 42875, end: 42875, },
  { start: 42877, end: 42878, },
  { start: 42880, end: 42880, },
  { start: 42882, end: 42882, },
  { start: 42884, end: 42884, },
  { start: 42886, end: 42886, },
  { start: 42891, end: 42891, },
  { start: 42893, end: 42893, },
  { start: 42896, end: 42896, },
  { start: 42898, end: 42898, },
  { start: 42902, end: 42902, },
  { start: 42904, end: 42904, },
  { start: 42906, end: 42906, },
  { start: 42908, end: 42908, },
  { start: 42910, end: 42910, },
  { start: 42912, end: 42912, },
  { start: 42914, end: 42914, },
  { start: 42916, end: 42916, },
  { start: 42918, end: 42918, },
  { start: 42920, end: 42920, },
  { start: 42922, end: 42926, },
  { start: 42928, end: 42932, },
  { start: 42934, end: 42934, },
  { start: 42936, end: 42936, },
  { start: 42938, end: 42938, },
  { start: 42940, end: 42940, },
  { start: 42942, end: 42942, },
  { start: 42944, end: 42944, },
  { start: 42946, end: 42946, },
  { start: 42948, end: 42951, },
  { start: 42953, end: 42953, },
  { start: 42955, end: 42956, },
  { start: 42958, end: 42958, },
  { start: 42960, end: 42960, },
  { start: 42962, end: 42962, },
  { start: 42964, end: 42964, },
  { start: 42966, end: 42966, },
  { start: 42968, end: 42968, },
  { start: 42970, end: 42970, },
  { start: 42972, end: 42972, },
  { start: 42997, end: 42997, },
  { start: 65313, end: 65338, },
  { start: 66560, end: 66599, },
  { start: 66736, end: 66771, },
  { start: 66928, end: 66938, },
  { start: 66940, end: 66954, },
  { start: 66956, end: 66962, },
  { start: 66964, end: 66965, },
  { start: 68736, end: 68786, },
  { start: 68944, end: 68965, },
  { start: 71840, end: 71871, },
  { start: 93760, end: 93791, },
  { start: 93856, end: 93880, },
  { start: 119808, end: 119833, },
  { start: 119860, end: 119885, },
  { start: 119912, end: 119937, },
  { start: 119964, end: 119964, },
  { start: 119966, end: 119967, },
  { start: 119970, end: 119970, },
  { start: 119973, end: 119974, },
  { start: 119977, end: 119980, },
  { start: 119982, end: 119989, },
  { start: 120016, end: 120041, },
  { start: 120068, end: 120069, },
  { start: 120071, end: 120074, },
  { start: 120077, end: 120084, },
  { start: 120086, end: 120092, },
  { start: 120120, end: 120121, },
  { start: 120123, end: 120126, },
  { start: 120128, end: 120132, },
  { start: 120134, end: 120134, },
  { start: 120138, end: 120144, },
  { start: 120172, end: 120197, },
  { start: 120224, end: 120249, },
  { start: 120276, end: 120301, },
  { start: 120328, end: 120353, },
  { start: 120380, end: 120405, },
  { start: 120432, end: 120457, },
  { start: 120488, end: 120512, },
  { start: 120546, end: 120570, },
  { start: 120604, end: 120628, },
  { start: 120662, end: 120686, },
  { start: 120720, end: 120744, },
  { start: 120778, end: 120778, },
  { start: 125184, end: 125217, },
]

///|
let unicode_M : Array[UnicodeRange] = [
  { start: 768, end: 879, },
  { start: 1155, end: 1161, },
  { start: 1425, end: 1469, },
  { start: 1471, end: 1471, },
  { start: 1473, end: 1474, },
  { start: 1476, end: 1477, },
  { start: 1479, end: 1479, },
  { start: 1552, end: 1562, },
  { start: 1611, end: 1631, },
  { start: 1648, end: 1648, },
  { start: 1750, end: 1756, },
  { start: 1759, end: 1764, },
  { start: 1767, end: 1768, },
  { start: 1770, end: 1773, },
  { start: 1809, end: 1809, },
  { start: 1840, end: 1866, },
  { start: 1958, end: 1968, },
  { start: 2027, end: 2035, },
  { start: 2045, end: 2045, },
  { start: 2070, end: 2073, },
  { start: 2075, end: 2083, },
  { start: 2085, end: 2087, },
  { start: 2089, end: 2093, },
  { start: 2137, end: 2139, },
  { start: 2199, end: 2207, },
  { start: 2250, end: 2273, },
  { start: 2275, end: 2307, },
  { start: 2362, end: 2364, },
  { start: 2366, end: 2383, },
  { start: 2385, end: 2391, },
  { start: 2402, end: 2403, },
  { start: 2433, end: 2435, },
  { start: 2492, end: 2492, },
  { start: 2494, end: 2500, },
  { start: 2503, end: 2504, },
  { start: 2507, end: 2509, },
  { start: 2519, end: 2519, },
  { start: 2530, end: 2531, },
  { start: 2558, end: 2558, },
  { start: 2561, end: 2563, },
  { start: 2620, end: 2620, },
  { start: 2622, end: 2626, },
  { start: 2631, end: 2632, },
  { start: 2635, end: 2637, },
  { start: 2641, end: 2641, },
  { start: 2672, end: 2673, },
  { start: 2677, end: 2677, },
  { start: 2689, end: 2691, },
  { start: 2748, end: 2748, },
  { start: 2750, end: 2757, },
  { start: 2759, end: 2761, },
  { start: 2763, end: 2765, },
  { start: 2786, end: 2787, },
  { start: 2810, end: 2815, },
  { start: 2817, end: 2819, },
  { start: 2876, end: 2876, },
  { start: 2878, end: 2884, },
  { start: 2887, end: 2888, },
  { start: 2891, end: 2893, },
  { start: 2901, end: 2903, },
  { start: 2914, end: 2915, },
  { start: 2946, end: 2946, },
  { start: 3006, end: 3010, },
  { start: 3014, end: 3016, },
  { start: 3018, end: 3021, },
  { start: 3031, end: 3031, },
  { start: 3072, end: 3076, },
  { start: 3132, end: 3132, },
  { start: 3134, end: 3140, },
  { start: 3142, end: 3144, },
  { start: 3146, end: 3149, },
  { start: 3157, end: 3158, },
  { start: 3170, end: 3171, },
  { start: 3201, end: 3203, },
  { start: 3260, end: 3260, },
  { start: 3262, end: 3268, },
  { start: 3270, end: 3272, },
  { start: 3274, end: 3277, },
  { start: 3285, end: 3286, },
  { start: 3298, end: 3299, },
  { start: 3315, end: 3315, },
  { start: 3328, end: 3331, },
  { start: 3387, end: 3388, },
  { start: 3390, end: 3396, },
  { start: 3398, end: 3400, },
  { start: 3402, end: 3405, },
  { start: 3415, end: 3415, },
  { start: 3426, end: 3427, },
  { start: 3457, end: 3459, },
  { start: 3530, end: 3530, },
  { start: 3535, end: 3540, },
  { start: 3542, end: 3542, },
  { start: 3544, end: 3551, },
  { start: 3570, end: 3571, },
  { start: 3633, end: 3633, },
  { start: 3636, end: 3642, },
  { start: 3655, end: 3662, },
  { start: 3761, end: 3761, },
  { start: 3764, end: 3772, },
  { start: 3784, end: 3790, },
  { start: 3864, end: 3865, },
  { start: 3893, end: 3893, },
  { start: 3895, end: 3895, },
  { start: 3897, end: 3897, },
  { start: 3902, end: 3903, },
  { start: 3953, end: 3972, },
  { start: 3974, end: 3975, },
  { start: 3981, end: 3991, },
  { start: 3993, end: 4028, },
  { start: 4038, end: 4038, },
  { start: 4139, end: 4158, },
  { start: 4182, end: 4185, },
  { start: 4190, end: 4192, },
  { start: 4194, end: 4196, },
  { start: 4199, end: 4205, },
  { start: 4209, end: 4212, },
  { start: 4226, end: 4237, },
  { start: 4239, end: 4239, },
  { start: 4250, end: 4253, },
  { start: 4957, end: 4959, },
  { start: 5906, end: 5909, },
  { start: 5938, end: 5940, },
  { start: 5970, end: 5971, },
  { start: 6002, end: 6003, },
  { start: 6068, end: 6099, },
  { start: 6109, end: 6109, },
  { start: 6155, end: 6157, },
  { start: 6159, end: 6159, },
  { start: 6277, end: 6278, },
  { start: 6313, end: 6313, },
  { start: 6432, end: 6443, },
  { start: 6448, end: 6459, },
  { start: 6679, end: 6683, },
  { start: 6741, end: 6750, },
  { start: 6752, end: 6780, },
  { start: 6783, end: 6783, },
  { start: 6832, end: 6877, },
  { start: 6880, end: 6891, },
  { start: 6912, end: 6916, },
  { start: 6964, end: 6980, },
  { start: 7019, end: 7027, },
  { start: 7040, end: 7042, },
  { start: 7073, end: 7085, },
  { start: 7142, end: 7155, },
  { start: 7204, end: 7223, },
  { start: 7376, end: 7378, },
  { start: 7380, end: 7400, },
  { start: 7405, end: 7405, },
  { start: 7412, end: 7412, },
  { start: 7415, end: 7417, },
  { start: 7616, end: 7679, },
  { start: 8400, end: 8432, },
  { start: 11503, end: 11505, },
  { start: 11647, end: 11647, },
  { start: 11744, end: 11775, },
  { start: 12330, end: 12335, },
  { start: 12441, end: 12442, },
  { start: 42607, end: 42610, },
  { start: 42612, end: 42621, },
  { start: 42654, end: 42655, },
  { start: 42736, end: 42737, },
  { start: 43010, end: 43010, },
  { start: 43014, end: 43014, },
  { start: 43019, end: 43019, },
  { start: 43043, end: 43047, },
  { start: 43052, end: 43052, },
  { start: 43136, end: 43137, },
  { start: 43188, end: 43205, },
  { start: 43232, end: 43249, },
  { start: 43263, end: 43263, },
  { start: 43302, end: 43309, },
  { start: 43335, end: 43347, },
  { start: 43392, end: 43395, },
  { start: 43443, end: 43456, },
  { start: 43493, end: 43493, },
  { start: 43561, end: 43574, },
  { start: 43587, end: 43587, },
  { start: 43596, end: 43597, },
  { start: 43643, end: 43645, },
  { start: 43696, end: 43696, },
  { start: 43698, end: 43700, },
  { start: 43703, end: 43704, },
  { start: 43710, end: 43711, },
  { start: 43713, end: 43713, },
  { start: 43755, end: 43759, },
  { start: 43765, end: 43766, },
  { start: 44003, end: 44010, },
  { start: 44012, end: 44013, },
  { start: 64286, end: 64286, },
  { start: 65024, end: 65039, },
  { start: 65056, end: 65071, },
  { start: 66045, end: 66045, },
  { start: 66272, end: 66272, },
  { start: 66422, end: 66426, },
  { start: 68097, end: 68099, },
  { start: 68101, end: 68102, },
  { start: 68108, end: 68111, },
  { start: 68152, end: 68154, },
  { start: 68159, end: 68159, },
  { start: 68325, end: 68326, },
  { start: 68900, end: 68903, },
  { start: 68969, end: 68973, },
  { start: 69291, end: 69292, },
  { start: 69370, end: 69375, },
  { start: 69446, end: 69456, },
  { start: 69506, end: 69509, },
  { start: 69632, end: 69634, },
  { start: 69688, end: 69702, },
  { start: 69744, end: 69744, },
  { start: 69747, end: 69748, },
  { start: 69759, end: 69762, },
  { start: 69808, end: 69818, },
  { start: 69826, end: 69826, },
  { start: 69888, end: 69890, },
  { start: 69927, end: 69940, },
  { start: 69957, end: 69958, },
  { start: 70003, end: 70003, },
  { start: 70016, end: 70018, },
  { start: 70067, end: 70080, },
  { start: 70089, end: 70092, },
  { start: 70094, end: 70095, },
  { start: 70188, end: 70199, },
  { start: 70206, end: 70206, },
  { start: 70209, end: 70209, },
  { start: 70367, end: 70378, },
  { start: 70400, end: 70403, },
  { start: 70459, end: 70460, },
  { start: 70462, end: 70468, },
  { start: 70471, end: 70472, },
  { start: 70475, end: 70477, },
  { start: 70487, end: 70487, },
  { start: 70498, end: 70499, },
  { start: 70502, end: 70508, },
  { start: 70512, end: 70516, },
  { start: 70584, end: 70592, },
  { start: 70594, end: 70594, },
  { start: 70597, end: 70597, },
  { start: 70599, end: 70602, },
  { start: 70604, end: 70608, },
  { start: 70610, end: 70610, },
  { start: 70625, end: 70626, },
  { start: 70709, end: 70726, },
  { start: 70750, end: 70750, },
  { start: 70832, end: 70851, },
  { start: 71087, end: 71093, },
  { start: 71096, end: 71104, },
  { start: 71132, end: 71133, },
  { start: 71216, end: 71232, },
  { start: 71339, end: 71351, },
  { start: 71453, end: 71467, },
  { start: 71724, end: 71738, },
  { start: 71984, end: 71989, },
  { start: 71991, end: 71992, },
  { start: 71995, end: 71998, },
  { start: 72000, end: 72000, },
  { start: 72002, end: 72003, },
  { start: 72145, end: 72151, },
  { start: 72154, end: 72160, },
  { start: 72164, end: 72164, },
  { start: 72193, end: 72202, },
  { start: 72243, end: 72249, },
  { start: 72251, end: 72254, },
  { start: 72263, end: 72263, },
  { start: 72273, end: 72283, },
  { start: 72330, end: 72345, },
  { start: 72544, end: 72551, },
  { start: 72751, end: 72758, },
  { start: 72760, end: 72767, },
  { start: 72850, end: 72871, },
  { start: 72873, end: 72886, },
  { start: 73009, end: 73014, },
  { start: 73018, end: 73018, },
  { start: 73020, end: 73021, },
  { start: 73023, end: 73029, },
  { start: 73031, end: 73031, },
  { start: 73098, end: 73102, },
  { start: 73104, end: 73105, },
  { start: 73107, end: 73111, },
  { start: 73459, end: 73462, },
  { start: 73472, end: 73473, },
  { start: 73475, end: 73475, },
  { start: 73524, end: 73530, },
  { start: 73534, end: 73538, },
  { start: 73562, end: 73562, },
  { start: 78912, end: 78912, },
  { start: 78919, end: 78933, },
  { start: 90398, end: 90415, },
  { start: 92912, end: 92916, },
  { start: 92976, end: 92982, },
  { start: 94031, end: 94031, },
  { start: 94033, end: 94087, },
  { start: 94095, end: 94098, },
  { start: 94180, end: 94180, },
  { start: 94192, end: 94193, },
  { start: 113821, end: 113822, },
  { start: 118528, end: 118573, },
  { start: 118576, end: 118598, },
  { start: 119141, end: 119145, },
  { start: 119149, end: 119154, },
  { start: 119163, end: 119170, },
  { start: 119173, end: 119179, },
  { start: 119210, end: 119213, },
  { start: 119362, end: 119364, },
  { start: 121344, end: 121398, },
  { start: 121403, end: 121452, },
  { start: 121461, end: 121461, },
  { start: 121476, end: 121476, },
  { start: 121499, end: 121503, },
  { start: 121505, end: 121519, },
  { start: 122880, end: 122886, },
  { start: 122888, end: 122904, },
  { start: 122907, end: 122913, },
  { start: 122915, end: 122916, },
  { start: 122918, end: 122922, },
  { start: 123023, end: 123023, },
  { start: 123184, end: 123190, },
  { start: 123566, end: 123566, },
  { start: 123628, end: 123631, },
  { start: 124140, end: 124143, },
  { start: 124398, end: 124399, },
  { start: 124643, end: 124643, },
  { start: 124646, end: 124646, },
  { start: 124654, end: 124655, },
  { start: 124661, end: 124661, },
  { start: 125136, end: 125142, },
  { start: 125252, end: 125258, },
  { start: 917760, end: 917999, },
]

///|
let unicode_Mc : Array[UnicodeRange] = [
  { start: 2307, end: 2307, },
  { start: 2363, end: 2363, },
  { start: 2366, end: 2368, },
  { start: 2377, end: 2380, },
  { start: 2382, end: 2383, },
  { start: 2434, end: 2435, },
  { start: 2494, end: 2496, },
  { start: 2503, end: 2504, },
  { start: 2507, end: 2508, },
  { start: 2519, end: 2519, },
  { start: 2563, end: 2563, },
  { start: 2622, end: 2624, },
  { start: 2691, end: 2691, },
  { start: 2750, end: 2752, },
  { start: 2761, end: 2761, },
  { start: 2763, end: 2764, },
  { start: 2818, end: 2819, },
  { start: 2878, end: 2878, },
  { start: 2880, end: 2880, },
  { start: 2887, end: 2888, },
  { start: 2891, end: 2892, },
  { start: 2903, end: 2903, },
  { start: 3006, end: 3007, },
  { start: 3009, end: 3010, },
  { start: 3014, end: 3016, },
  { start: 3018, end: 3020, },
  { start: 3031, end: 3031, },
  { start: 3073, end: 3075, },
  { start: 3137, end: 3140, },
  { start: 3202, end: 3203, },
  { start: 3262, end: 3262, },
  { start: 3264, end: 3268, },
  { start: 3271, end: 3272, },
  { start: 3274, end: 3275, },
  { start: 3285, end: 3286, },
  { start: 3315, end: 3315, },
  { start: 3330, end: 3331, },
  { start: 3390, end: 3392, },
  { start: 3398, end: 3400, },
  { start: 3402, end: 3404, },
  { start: 3415, end: 3415, },
  { start: 3458, end: 3459, },
  { start: 3535, end: 3537, },
  { start: 3544, end: 3551, },
  { start: 3570, end: 3571, },
  { start: 3902, end: 3903, },
  { start: 3967, end: 3967, },
  { start: 4139, end: 4140, },
  { start: 4145, end: 4145, },
  { start: 4152, end: 4152, },
  { start: 4155, end: 4156, },
  { start: 4182, end: 4183, },
  { start: 4194, end: 4196, },
  { start: 4199, end: 4205, },
  { start: 4227, end: 4228, },
  { start: 4231, end: 4236, },
  { start: 4239, end: 4239, },
  { start: 4250, end: 4252, },
  { start: 5909, end: 5909, },
  { start: 5940, end: 5940, },
  { start: 6070, end: 6070, },
  { start: 6078, end: 6085, },
  { start: 6087, end: 6088, },
  { start: 6435, end: 6438, },
  { start: 6441, end: 6443, },
  { start: 6448, end: 6449, },
  { start: 6451, end: 6456, },
  { start: 6681, end: 6682, },
  { start: 6741, end: 6741, },
  { start: 6743, end: 6743, },
  { start: 6753, end: 6753, },
  { start: 6755, end: 6756, },
  { start: 6765, end: 6770, },
  { start: 6916, end: 6916, },
  { start: 6965, end: 6965, },
  { start: 6971, end: 6971, },
  { start: 6973, end: 6977, },
  { start: 6979, end: 6980, },
  { start: 7042, end: 7042, },
  { start: 7073, end: 7073, },
  { start: 7078, end: 7079, },
  { start: 7082, end: 7082, },
  { start: 7143, end: 7143, },
  { start: 7146, end: 7148, },
  { start: 7150, end: 7150, },
  { start: 7154, end: 7155, },
  { start: 7204, end: 7211, },
  { start: 7220, end: 7221, },
  { start: 7393, end: 7393, },
  { start: 7415, end: 7415, },
  { start: 12334, end: 12335, },
  { start: 43043, end: 43044, },
  { start: 43047, end: 43047, },
  { start: 43136, end: 43137, },
  { start: 43188, end: 43203, },
  { start: 43346, end: 43347, },
  { start: 43395, end: 43395, },
  { start: 43444, end: 43445, },
  { start: 43450, end: 43451, },
  { start: 43454, end: 43456, },
  { start: 43567, end: 43568, },
  { start: 43571, end: 43572, },
  { start: 43597, end: 43597, },
  { start: 43643, end: 43643, },
  { start: 43645, end: 43645, },
  { start: 43755, end: 43755, },
  { start: 43758, end: 43759, },
  { start: 43765, end: 43765, },
  { start: 44003, end: 44004, },
  { start: 44006, end: 44007, },
  { start: 44009, end: 44010, },
  { start: 44012, end: 44012, },
  { start: 69632, end: 69632, },
  { start: 69634, end: 69634, },
  { start: 69762, end: 69762, },
  { start: 69808, end: 69810, },
  { start: 69815, end: 69816, },
  { start: 69932, end: 69932, },
  { start: 69957, end: 69958, },
  { start: 70018, end: 70018, },
  { start: 70067, end: 70069, },
  { start: 70079, end: 70080, },
  { start: 70094, end: 70094, },
  { start: 70188, end: 70190, },
  { start: 70194, end: 70195, },
  { start: 70197, end: 70197, },
  { start: 70368, end: 70370, },
  { start: 70402, end: 70403, },
  { start: 70462, end: 70463, },
  { start: 70465, end: 70468, },
  { start: 70471, end: 70472, },
  { start: 70475, end: 70477, },
  { start: 70487, end: 70487, },
  { start: 70498, end: 70499, },
  { start: 70584, end: 70586, },
  { start: 70594, end: 70594, },
  { start: 70597, end: 70597, },
  { start: 70599, end: 70602, },
  { start: 70604, end: 70605, },
  { start: 70607, end: 70607, },
  { start: 70709, end: 70711, },
  { start: 70720, end: 70721, },
  { start: 70725, end: 70725, },
  { start: 70832, end: 70834, },
  { start: 70841, end: 70841, },
  { start: 70843, end: 70846, },
  { start: 70849, end: 70849, },
  { start: 71087, end: 71089, },
  { start: 71096, end: 71099, },
  { start: 71102, end: 71102, },
  { start: 71216, end: 71218, },
  { start: 71227, end: 71228, },
  { start: 71230, end: 71230, },
  { start: 71340, end: 71340, },
  { start: 71342, end: 71343, },
  { start: 71350, end: 71350, },
  { start: 71454, end: 71454, },
  { start: 71456, end: 71457, },
  { start: 71462, end: 71462, },
  { start: 71724, end: 71726, },
  { start: 71736, end: 71736, },
  { start: 71984, end: 71989, },
  { start: 71991, end: 71992, },
  { start: 71997, end: 71997, },
  { start: 72000, end: 72000, },
  { start: 72002, end: 72002, },
  { start: 72145, end: 72147, },
  { start: 72156, end: 72159, },
  { start: 72164, end: 72164, },
  { start: 72249, end: 72249, },
  { start: 72279, end: 72280, },
  { start: 72343, end: 72343, },
  { start: 72545, end: 72545, },
  { start: 72549, end: 72549, },
  { start: 72551, end: 72551, },
  { start: 72751, end: 72751, },
  { start: 72766, end: 72766, },
  { start: 72873, end: 72873, },
  { start: 72881, end: 72881, },
  { start: 72884, end: 72884, },
  { start: 73098, end: 73102, },
  { start: 73107, end: 73108, },
  { start: 73110, end: 73110, },
  { start: 73461, end: 73462, },
  { start: 73475, end: 73475, },
  { start: 73524, end: 73525, },
  { start: 73534, end: 73535, },
  { start: 73537, end: 73537, },
  { start: 90410, end: 90412, },
  { start: 94033, end: 94087, },
  { start: 94192, end: 94193, },
  { start: 119141, end: 119142, },
  { start: 119149, end: 119154, },
]

///|
let unicode_Me : Array[UnicodeRange] = [
  { start: 1160, end: 1161, },
  { start: 6846, end: 6846, },
  { start: 8413, end: 8416, },
  { start: 8418, end: 8420, },
  { start: 42608, end: 42610, },
]

///|
let unicode_Mn : Array[UnicodeRange] = [
  { start: 768, end: 879, },
  { start: 1155, end: 1159, },
  { start: 1425, end: 1469, },
  { start: 1471, end: 1471, },
  { start: 1473, end: 1474, },
  { start: 1476, end: 1477, },
  { start: 1479, end: 1479, },
  { start: 1552, end: 1562, },
  { start: 1611, end: 1631, },
  { start: 1648, end: 1648, },
  { start: 1750, end: 1756, },
  { start: 1759, end: 1764, },
  { start: 1767, end: 1768, },
  { start: 1770, end: 1773, },
  { start: 1809, end: 1809, },
  { start: 1840, end: 1866, },
  { start: 1958, end: 1968, },
  { start: 2027, end: 2035, },
  { start: 2045, end: 2045, },
  { start: 2070, end: 2073, },
  { start: 2075, end: 2083, },
  { start: 2085, end: 2087, },
  { start: 2089, end: 2093, },
  { start: 2137, end: 2139, },
  { start: 2199, end: 2207, },
  { start: 2250, end: 2273, },
  { start: 2275, end: 2306, },
  { start: 2362, end: 2362, },
  { start: 2364, end: 2364, },
  { start: 2369, end: 2376, },
  { start: 2381, end: 2381, },
  { start: 2385, end: 2391, },
  { start: 2402, end: 2403, },
  { start: 2433, end: 2433, },
  { start: 2492, end: 2492, },
  { start: 2497, end: 2500, },
  { start: 2509, end: 2509, },
  { start: 2530, end: 2531, },
  { start: 2558, end: 2558, },
  { start: 2561, end: 2562, },
  { start: 2620, end: 2620, },
  { start: 2625, end: 2626, },
  { start: 2631, end: 2632, },
  { start: 2635, end: 2637, },
  { start: 2641, end: 2641, },
  { start: 2672, end: 2673, },
  { start: 2677, end: 2677, },
  { start: 2689, end: 2690, },
  { start: 2748, end: 2748, },
  { start: 2753, end: 2757, },
  { start: 2759, end: 2760, },
  { start: 2765, end: 2765, },
  { start: 2786, end: 2787, },
  { start: 2810, end: 2815, },
  { start: 2817, end: 2817, },
  { start: 2876, end: 2876, },
  { start: 2879, end: 2879, },
  { start: 2881, end: 2884, },
  { start: 2893, end: 2893, },
  { start: 2901, end: 2902, },
  { start: 2914, end: 2915, },
  { start: 2946, end: 2946, },
  { start: 3008, end: 3008, },
  { start: 3021, end: 3021, },
  { start: 3072, end: 3072, },
  { start: 3076, end: 3076, },
  { start: 3132, end: 3132, },
  { start: 3134, end: 3136, },
  { start: 3142, end: 3144, },
  { start: 3146, end: 3149, },
  { start: 3157, end: 3158, },
  { start: 3170, end: 3171, },
  { start: 3201, end: 3201, },
  { start: 3260, end: 3260, },
  { start: 3263, end: 3263, },
  { start: 3270, end: 3270, },
  { start: 3276, end: 3277, },
  { start: 3298, end: 3299, },
  { start: 3328, end: 3329, },
  { start: 3387, end: 3388, },
  { start: 3393, end: 3396, },
  { start: 3405, end: 3405, },
  { start: 3426, end: 3427, },
  { start: 3457, end: 3457, },
  { start: 3530, end: 3530, },
  { start: 3538, end: 3540, },
  { start: 3542, end: 3542, },
  { start: 3633, end: 3633, },
  { start: 3636, end: 3642, },
  { start: 3655, end: 3662, },
  { start: 3761, end: 3761, },
  { start: 3764, end: 3772, },
  { start: 3784, end: 3790, },
  { start: 3864, end: 3865, },
  { start: 3893, end: 3893, },
  { start: 3895, end: 3895, },
  { start: 3897, end: 3897, },
  { start: 3953, end: 3966, },
  { start: 3968, end: 3972, },
  { start: 3974, end: 3975, },
  { start: 3981, end: 3991, },
  { start: 3993, end: 4028, },
  { start: 4038, end: 4038, },
  { start: 4141, end: 4144, },
  { start: 4146, end: 4151, },
  { start: 4153, end: 4154, },
  { start: 4157, end: 4158, },
  { start: 4184, end: 4185, },
  { start: 4190, end: 4192, },
  { start: 4209, end: 4212, },
  { start: 4226, end: 4226, },
  { start: 4229, end: 4230, },
  { start: 4237, end: 4237, },
  { start: 4253, end: 4253, },
  { start: 4957, end: 4959, },
  { start: 5906, end: 5908, },
  { start: 5938, end: 5939, },
  { start: 5970, end: 5971, },
  { start: 6002, end: 6003, },
  { start: 6068, end: 6069, },
  { start: 6071, end: 6077, },
  { start: 6086, end: 6086, },
  { start: 6089, end: 6099, },
  { start: 6109, end: 6109, },
  { start: 6155, end: 6157, },
  { start: 6159, end: 6159, },
  { start: 6277, end: 6278, },
  { start: 6313, end: 6313, },
  { start: 6432, end: 6434, },
  { start: 6439, end: 6440, },
  { start: 6450, end: 6450, },
  { start: 6457, end: 6459, },
  { start: 6679, end: 6680, },
  { start: 6683, end: 6683, },
  { start: 6742, end: 6742, },
  { start: 6744, end: 6750, },
  { start: 6752, end: 6752, },
  { start: 6754, end: 6754, },
  { start: 6757, end: 6764, },
  { start: 6771, end: 6780, },
  { start: 6783, end: 6783, },
  { start: 6832, end: 6845, },
  { start: 6847, end: 6877, },
  { start: 6880, end: 6891, },
  { start: 6912, end: 6915, },
  { start: 6964, end: 6964, },
  { start: 6966, end: 6970, },
  { start: 6972, end: 6972, },
  { start: 6978, end: 6978, },
  { start: 7019, end: 7027, },
  { start: 7040, end: 7041, },
  { start: 7074, end: 7077, },
  { start: 7080, end: 7081, },
  { start: 7083, end: 7085, },
  { start: 7142, end: 7142, },
  { start: 7144, end: 7145, },
  { start: 7149, end: 7149, },
  { start: 7151, end: 7153, },
  { start: 7212, end: 7219, },
  { start: 7222, end: 7223, },
  { start: 7376, end: 7378, },
  { start: 7380, end: 7392, },
  { start: 7394, end: 7400, },
  { start: 7405, end: 7405, },
  { start: 7412, end: 7412, },
  { start: 7416, end: 7417, },
  { start: 7616, end: 7679, },
  { start: 8400, end: 8412, },
  { start: 8417, end: 8417, },
  { start: 8421, end: 8432, },
  { start: 11503, end: 11505, },
  { start: 11647, end: 11647, },
  { start: 11744, end: 11775, },
  { start: 12330, end: 12333, },
  { start: 12441, end: 12442, },
  { start: 42607, end: 42607, },
  { start: 42612, end: 42621, },
  { start: 42654, end: 42655, },
  { start: 42736, end: 42737, },
  { start: 43010, end: 43010, },
  { start: 43014, end: 43014, },
  { start: 43019, end: 43019, },
  { start: 43045, end: 43046, },
  { start: 43052, end: 43052, },
  { start: 43204, end: 43205, },
  { start: 43232, end: 43249, },
  { start: 43263, end: 43263, },
  { start: 43302, end: 43309, },
  { start: 43335, end: 43345, },
  { start: 43392, end: 43394, },
  { start: 43443, end: 43443, },
  { start: 43446, end: 43449, },
  { start: 43452, end: 43453, },
  { start: 43493, end: 43493, },
  { start: 43561, end: 43566, },
  { start: 43569, end: 43570, },
  { start: 43573, end: 43574, },
  { start: 43587, end: 43587, },
  { start: 43596, end: 43596, },
  { start: 43644, end: 43644, },
  { start: 43696, end: 43696, },
  { start: 43698, end: 43700, },
  { start: 43703, end: 43704, },
  { start: 43710, end: 43711, },
  { start: 43713, end: 43713, },
  { start: 43756, end: 43757, },
  { start: 43766, end: 43766, },
  { start: 44005, end: 44005, },
  { start: 44008, end: 44008, },
  { start: 44013, end: 44013, },
  { start: 64286, end: 64286, },
  { start: 65024, end: 65039, },
  { start: 65056, end: 65071, },
  { start: 66045, end: 66045, },
  { start: 66272, end: 66272, },
  { start: 66422, end: 66426, },
  { start: 68097, end: 68099, },
  { start: 68101, end: 68102, },
  { start: 68108, end: 68111, },
  { start: 68152, end: 68154, },
  { start: 68159, end: 68159, },
  { start: 68325, end: 68326, },
  { start: 68900, end: 68903, },
  { start: 68969, end: 68973, },
  { start: 69291, end: 69292, },
  { start: 69370, end: 69375, },
  { start: 69446, end: 69456, },
  { start: 69506, end: 69509, },
  { start: 69633, end: 69633, },
  { start: 69688, end: 69702, },
  { start: 69744, end: 69744, },
  { start: 69747, end: 69748, },
  { start: 69759, end: 69761, },
  { start: 69811, end: 69814, },
  { start: 69817, end: 69818, },
  { start: 69826, end: 69826, },
  { start: 69888, end: 69890, },
  { start: 69927, end: 69931, },
  { start: 69933, end: 69940, },
  { start: 70003, end: 70003, },
  { start: 70016, end: 70017, },
  { start: 70070, end: 70078, },
  { start: 70089, end: 70092, },
  { start: 70095, end: 70095, },
  { start: 70191, end: 70193, },
  { start: 70196, end: 70196, },
  { start: 70198, end: 70199, },
  { start: 70206, end: 70206, },
  { start: 70209, end: 70209, },
  { start: 70367, end: 70367, },
  { start: 70371, end: 70378, },
  { start: 70400, end: 70401, },
  { start: 70459, end: 70460, },
  { start: 70464, end: 70464, },
  { start: 70502, end: 70508, },
  { start: 70512, end: 70516, },
  { start: 70587, end: 70592, },
  { start: 70606, end: 70606, },
  { start: 70608, end: 70608, },
  { start: 70610, end: 70610, },
  { start: 70625, end: 70626, },
  { start: 70712, end: 70719, },
  { start: 70722, end: 70724, },
  { start: 70726, end: 70726, },
  { start: 70750, end: 70750, },
  { start: 70835, end: 70840, },
  { start: 70842, end: 70842, },
  { start: 70847, end: 70848, },
  { start: 70850, end: 70851, },
  { start: 71090, end: 71093, },
  { start: 71100, end: 71101, },
  { start: 71103, end: 71104, },
  { start: 71132, end: 71133, },
  { start: 71219, end: 71226, },
  { start: 71229, end: 71229, },
  { start: 71231, end: 71232, },
  { start: 71339, end: 71339, },
  { start: 71341, end: 71341, },
  { start: 71344, end: 71349, },
  { start: 71351, end: 71351, },
  { start: 71453, end: 71453, },
  { start: 71455, end: 71455, },
  { start: 71458, end: 71461, },
  { start: 71463, end: 71467, },
  { start: 71727, end: 71735, },
  { start: 71737, end: 71738, },
  { start: 71995, end: 71996, },
  { start: 71998, end: 71998, },
  { start: 72003, end: 72003, },
  { start: 72148, end: 72151, },
  { start: 72154, end: 72155, },
  { start: 72160, end: 72160, },
  { start: 72193, end: 72202, },
  { start: 72243, end: 72248, },
  { start: 72251, end: 72254, },
  { start: 72263, end: 72263, },
  { start: 72273, end: 72278, },
  { start: 72281, end: 72283, },
  { start: 72330, end: 72342, },
  { start: 72344, end: 72345, },
  { start: 72544, end: 72544, },
  { start: 72546, end: 72548, },
  { start: 72550, end: 72550, },
  { start: 72752, end: 72758, },
  { start: 72760, end: 72765, },
  { start: 72767, end: 72767, },
  { start: 72850, end: 72871, },
  { start: 72874, end: 72880, },
  { start: 72882, end: 72883, },
  { start: 72885, end: 72886, },
  { start: 73009, end: 73014, },
  { start: 73018, end: 73018, },
  { start: 73020, end: 73021, },
  { start: 73023, end: 73029, },
  { start: 73031, end: 73031, },
  { start: 73104, end: 73105, },
  { start: 73109, end: 73109, },
  { start: 73111, end: 73111, },
  { start: 73459, end: 73460, },
  { start: 73472, end: 73473, },
  { start: 73526, end: 73530, },
  { start: 73536, end: 73536, },
  { start: 73538, end: 73538, },
  { start: 73562, end: 73562, },
  { start: 78912, end: 78912, },
  { start: 78919, end: 78933, },
  { start: 90398, end: 90409, },
  { start: 90413, end: 90415, },
  { start: 92912, end: 92916, },
  { start: 92976, end: 92982, },
  { start: 94031, end: 94031, },
  { start: 94095, end: 94098, },
  { start: 94180, end: 94180, },
  { start: 113821, end: 113822, },
  { start: 118528, end: 118573, },
  { start: 118576, end: 118598, },
  { start: 119143, end: 119145, },
  { start: 119163, end: 119170, },
  { start: 119173, end: 119179, },
  { start: 119210, end: 119213, },
  { start: 119362, end: 119364, },
  { start: 121344, end: 121398, },
  { start: 121403, end: 121452, },
  { start: 121461, end: 121461, },
  { start: 121476, end: 121476, },
  { start: 121499, end: 121503, },
  { start: 121505, end: 121519, },
  { start: 122880, end: 122886, },
  { start: 122888, end: 122904, },
  { start: 122907, end: 122913, },
  { start: 122915, end: 122916, },
  { start: 122918, end: 122922, },
  { start: 123023, end: 123023, },
  { start: 123184, end: 123190, },
  { start: 123566, end: 123566, },
  { start: 123628, end: 123631, },
  { start: 124140, end: 124143, },
  { start: 124398, end: 124399, },
  { start: 124643, end: 124643, },
  { start: 124646, end: 124646, },
  { start: 124654, end: 124655, },
  { start: 124661, end: 124661, },
  { start: 125136, end: 125142, },
  { start: 125252, end: 125258, },
  { start: 917760, end: 917999, },
]

///|
let unicode_N : Array[UnicodeRange] = [
  { start: 48, end: 57, },
  { start: 178, end: 179, },
  { start: 185, end: 185, },
  { start: 188, end: 190, },
  { start: 1632, end: 1641, },
  { start: 1776, end: 1785, },
  { start: 1984, end: 1993, },
  { start: 2406, end: 2415, },
  { start: 2534, end: 2543, },
  { start: 2548, end: 2553, },
  { start: 2662, end: 2671, },
  { start: 2790, end: 2799, },
  { start: 2918, end: 2927, },
  { start: 2930, end: 2935, },
  { start: 3046, end: 3058, },
  { start: 3174, end: 3183, },
  { start: 3192, end: 3198, },
  { start: 3302, end: 3311, },
  { start: 3416, end: 3422, },
  { start: 3430, end: 3448, },
  { start: 3558, end: 3567, },
  { start: 3664, end: 3673, },
  { start: 3792, end: 3801, },
  { start: 3872, end: 3891, },
  { start: 4160, end: 4169, },
  { start: 4240, end: 4249, },
  { start: 4969, end: 4988, },
  { start: 5870, end: 5872, },
  { start: 6112, end: 6121, },
  { start: 6128, end: 6137, },
  { start: 6160, end: 6169, },
  { start: 6470, end: 6479, },
  { start: 6608, end: 6618, },
  { start: 6784, end: 6793, },
  { start: 6800, end: 6809, },
  { start: 6992, end: 7001, },
  { start: 7088, end: 7097, },
  { start: 7232, end: 7241, },
  { start: 7248, end: 7257, },
  { start: 8304, end: 8304, },
  { start: 8308, end: 8313, },
  { start: 8320, end: 8329, },
  { start: 8528, end: 8578, },
  { start: 8581, end: 8585, },
  { start: 9312, end: 9371, },
  { start: 9450, end: 9471, },
  { start: 10102, end: 10131, },
  { start: 11517, end: 11517, },
  { start: 12295, end: 12295, },
  { start: 12321, end: 12329, },
  { start: 12344, end: 12346, },
  { start: 12690, end: 12693, },
  { start: 12832, end: 12841, },
  { start: 12872, end: 12879, },
  { start: 12881, end: 12895, },
  { start: 12928, end: 12937, },
  { start: 12977, end: 12991, },
  { start: 42528, end: 42537, },
  { start: 42726, end: 42735, },
  { start: 43056, end: 43061, },
  { start: 43216, end: 43225, },
  { start: 43264, end: 43273, },
  { start: 43472, end: 43481, },
  { start: 43504, end: 43513, },
  { start: 43600, end: 43609, },
  { start: 44016, end: 44025, },
  { start: 65296, end: 65305, },
  { start: 65799, end: 65843, },
  { start: 65856, end: 65912, },
  { start: 65930, end: 65931, },
  { start: 66273, end: 66299, },
  { start: 66336, end: 66339, },
  { start: 66369, end: 66369, },
  { start: 66378, end: 66378, },
  { start: 66513, end: 66517, },
  { start: 66720, end: 66729, },
  { start: 67672, end: 67679, },
  { start: 67705, end: 67711, },
  { start: 67751, end: 67759, },
  { start: 67835, end: 67839, },
  { start: 67862, end: 67867, },
  { start: 68028, end: 68029, },
  { start: 68032, end: 68047, },
  { start: 68050, end: 68095, },
  { start: 68160, end: 68168, },
  { start: 68221, end: 68222, },
  { start: 68253, end: 68255, },
  { start: 68331, end: 68335, },
  { start: 68440, end: 68447, },
  { start: 68472, end: 68479, },
  { start: 68521, end: 68527, },
  { start: 68858, end: 68863, },
  { start: 68912, end: 68921, },
  { start: 68928, end: 68937, },
  { start: 69216, end: 69246, },
  { start: 69405, end: 69414, },
  { start: 69457, end: 69460, },
  { start: 69573, end: 69579, },
  { start: 69714, end: 69743, },
  { start: 69872, end: 69881, },
  { start: 69942, end: 69951, },
  { start: 70096, end: 70105, },
  { start: 70113, end: 70132, },
  { start: 70384, end: 70393, },
  { start: 70736, end: 70745, },
  { start: 70864, end: 70873, },
  { start: 71248, end: 71257, },
  { start: 71360, end: 71369, },
  { start: 71376, end: 71395, },
  { start: 71472, end: 71483, },
  { start: 71904, end: 71922, },
  { start: 72016, end: 72025, },
  { start: 72688, end: 72697, },
  { start: 72784, end: 72812, },
  { start: 73040, end: 73049, },
  { start: 73120, end: 73129, },
  { start: 73184, end: 73193, },
  { start: 73552, end: 73561, },
  { start: 73664, end: 73684, },
  { start: 74752, end: 74862, },
  { start: 90416, end: 90425, },
  { start: 92768, end: 92777, },
  { start: 92864, end: 92873, },
  { start: 93008, end: 93017, },
  { start: 93019, end: 93025, },
  { start: 93552, end: 93561, },
  { start: 93824, end: 93846, },
  { start: 94196, end: 94198, },
  { start: 118000, end: 118009, },
  { start: 119488, end: 119507, },
  { start: 119520, end: 119539, },
  { start: 119648, end: 119672, },
  { start: 120782, end: 120831, },
  { start: 123200, end: 123209, },
  { start: 123632, end: 123641, },
  { start: 124144, end: 124153, },
  { start: 124401, end: 124410, },
  { start: 125127, end: 125135, },
  { start: 125264, end: 125273, },
  { start: 126065, end: 126123, },
  { start: 126125, end: 126127, },
  { start: 126129, end: 126132, },
  { start: 126209, end: 126253, },
  { start: 126255, end: 126269, },
  { start: 127232, end: 127244, },
  { start: 130032, end: 130041, },
]

///|
let unicode_Nd : Array[UnicodeRange] = [
  { start: 48, end: 57, },
  { start: 1632, end: 1641, },
  { start: 1776, end: 1785, },
  { start: 1984, end: 1993, },
  { start: 2406, end: 2415, },
  { start: 2534, end: 2543, },
  { start: 2662, end: 2671, },
  { start: 2790, end: 2799, },
  { start: 2918, end: 2927, },
  { start: 3046, end: 3055, },
  { start: 3174, end: 3183, },
  { start: 3302, end: 3311, },
  { start: 3430, end: 3439, },
  { start: 3558, end: 3567, },
  { start: 3664, end: 3673, },
  { start: 3792, end: 3801, },
  { start: 3872, end: 3881, },
  { start: 4160, end: 4169, },
  { start: 4240, end: 4249, },
  { start: 6112, end: 6121, },
  { start: 6160, end: 6169, },
  { start: 6470, end: 6479, },
  { start: 6608, end: 6617, },
  { start: 6784, end: 6793, },
  { start: 6800, end: 6809, },
  { start: 6992, end: 7001, },
  { start: 7088, end: 7097, },
  { start: 7232, end: 7241, },
  { start: 7248, end: 7257, },
  { start: 42528, end: 42537, },
  { start: 43216, end: 43225, },
  { start: 43264, end: 43273, },
  { start: 43472, end: 43481, },
  { start: 43504, end: 43513, },
  { start: 43600, end: 43609, },
  { start: 44016, end: 44025, },
  { start: 65296, end: 65305, },
  { start: 66720, end: 66729, },
  { start: 68912, end: 68921, },
  { start: 68928, end: 68937, },
  { start: 69734, end: 69743, },
  { start: 69872, end: 69881, },
  { start: 69942, end: 69951, },
  { start: 70096, end: 70105, },
  { start: 70384, end: 70393, },
  { start: 70736, end: 70745, },
  { start: 70864, end: 70873, },
  { start: 71248, end: 71257, },
  { start: 71360, end: 71369, },
  { start: 71376, end: 71395, },
  { start: 71472, end: 71481, },
  { start: 71904, end: 71913, },
  { start: 72016, end: 72025, },
  { start: 72688, end: 72697, },
  { start: 72784, end: 72793, },
  { start: 73040, end: 73049, },
  { start: 73120, end: 73129, },
  { start: 73184, end: 73193, },
  { start: 73552, end: 73561, },
  { start: 90416, end: 90425, },
  { start: 92768, end: 92777, },
  { start: 92864, end: 92873, },
  { start: 93008, end: 93017, },
  { start: 93552, end: 93561, },
  { start: 118000, end: 118009, },
  { start: 120782, end: 120831, },
  { start: 123200, end: 123209, },
  { start: 123632, end: 123641, },
  { start: 124144, end: 124153, },
  { start: 124401, end: 124410, },
  { start: 125264, end: 125273, },
  { start: 130032, end: 130041, },
]

///|
let unicode_Nl : Array[UnicodeRange] = [
  { start: 5870, end: 5872, },
  { start: 8544, end: 8578, },
  { start: 8581, end: 8584, },
  { start: 12295, end: 12295, },
  { start: 12321, end: 12329, },
  { start: 12344, end: 12346, },
  { start: 42726, end: 42735, },
  { start: 65856, end: 65908, },
  { start: 66369, end: 66369, },
  { start: 66378, end: 66378, },
  { start: 66513, end: 66517, },
  { start: 74752, end: 74862, },
  { start: 94196, end: 94198, },
]

///|
let unicode_No : Array[UnicodeRange] = [
  { start: 178, end: 179, },
  { start: 185, end: 185, },
  { start: 188, end: 190, },
  { start: 2548, end: 2553, },
  { start: 2930, end: 2935, },
  { start: 3056, end: 3058, },
  { start: 3192, end: 3198, },
  { start: 3416, end: 3422, },
  { start: 3440, end: 3448, },
  { start: 3882, end: 3891, },
  { start: 4969, end: 4988, },
  { start: 6128, end: 6137, },
  { start: 6618, end: 6618, },
  { start: 8304, end: 8304, },
  { start: 8308, end: 8313, },
  { start: 8320, end: 8329, },
  { start: 8528, end: 8543, },
  { start: 8585, end: 8585, },
  { start: 9312, end: 9371, },
  { start: 9450, end: 9471, },
  { start: 10102, end: 10131, },
  { start: 11517, end: 11517, },
  { start: 12690, end: 12693, },
  { start: 12832, end: 12841, },
  { start: 12872, end: 12879, },
  { start: 12881, end: 12895, },
  { start: 12928, end: 12937, },
  { start: 12977, end: 12991, },
  { start: 43056, end: 43061, },
  { start: 65799, end: 65843, },
  { start: 65909, end: 65912, },
  { start: 65930, end: 65931, },
  { start: 66273, end: 66299, },
  { start: 66336, end: 66339, },
  { start: 67672, end: 67679, },
  { start: 67705, end: 67711, },
  { start: 67751, end: 67759, },
  { start: 67835, end: 67839, },
  { start: 67862, end: 67867, },
  { start: 68028, end: 68029, },
  { start: 68032, end: 68047, },
  { start: 68050, end: 68095, },
  { start: 68160, end: 68168, },
  { start: 68221, end: 68222, },
  { start: 68253, end: 68255, },
  { start: 68331, end: 68335, },
  { start: 68440, end: 68447, },
  { start: 68472, end: 68479, },
  { start: 68521, end: 68527, },
  { start: 68858, end: 68863, },
  { start: 69216, end: 69246, },
  { start: 69405, end: 69414, },
  { start: 69457, end: 69460, },
  { start: 69573, end: 69579, },
  { start: 69714, end: 69733, },
  { start: 70113, end: 70132, },
  { start: 71482, end: 71483, },
  { start: 71914, end: 71922, },
  { start: 72794, end: 72812, },
  { start: 73664, end: 73684, },
  { start: 93019, end: 93025, },
  { start: 93824, end: 93846, },
  { start: 119488, end: 119507, },
  { start: 119520, end: 119539, },
  { start: 119648, end: 119672, },
  { start: 125127, end: 125135, },
  { start: 126065, end: 126123, },
  { start: 126125, end: 126127, },
  { start: 126129, end: 126132, },
  { start: 126209, end: 126253, },
  { start: 126255, end: 126269, },
  { start: 127232, end: 127244, },
]

///|
let unicode_P : Array[UnicodeRange] = [
  { start: 33, end: 35, },
  { start: 37, end: 42, },
  { start: 44, end: 47, },
  { start: 58, end: 59, },
  { start: 63, end: 64, },
  { start: 91, end: 93, },
  { start: 95, end: 95, },
  { start: 123, end: 123, },
  { start: 125, end: 125, },
  { start: 161, end: 161, },
  { start: 167, end: 167, },
  { start: 171, end: 171, },
  { start: 182, end: 183, },
  { start: 187, end: 187, },
  { start: 191, end: 191, },
  { start: 894, end: 894, },
  { start: 903, end: 903, },
  { start: 1370, end: 1375, },
  { start: 1417, end: 1418, },
  { start: 1470, end: 1470, },
  { start: 1472, end: 1472, },
  { start: 1475, end: 1475, },
  { start: 1478, end: 1478, },
  { start: 1523, end: 1524, },
  { start: 1545, end: 1546, },
  { start: 1548, end: 1549, },
  { start: 1563, end: 1563, },
  { start: 1565, end: 1567, },
  { start: 1642, end: 1645, },
  { start: 1748, end: 1748, },
  { start: 1792, end: 1805, },
  { start: 2039, end: 2041, },
  { start: 2096, end: 2110, },
  { start: 2142, end: 2142, },
  { start: 2404, end: 2405, },
  { start: 2416, end: 2416, },
  { start: 2557, end: 2557, },
  { start: 2678, end: 2678, },
  { start: 2800, end: 2800, },
  { start: 3191, end: 3191, },
  { start: 3204, end: 3204, },
  { start: 3572, end: 3572, },
  { start: 3663, end: 3663, },
  { start: 3674, end: 3675, },
  { start: 3844, end: 3858, },
  { start: 3860, end: 3860, },
  { start: 3898, end: 3901, },
  { start: 3973, end: 3973, },
  { start: 4048, end: 4052, },
  { start: 4057, end: 4058, },
  { start: 4170, end: 4175, },
  { start: 4347, end: 4347, },
  { start: 4960, end: 4968, },
  { start: 5120, end: 5120, },
  { start: 5742, end: 5742, },
  { start: 5787, end: 5788, },
  { start: 5867, end: 5869, },
  { start: 5941, end: 5942, },
  { start: 6100, end: 6102, },
  { start: 6104, end: 6106, },
  { start: 6144, end: 6154, },
  { start: 6468, end: 6469, },
  { start: 6686, end: 6687, },
  { start: 6816, end: 6822, },
  { start: 6824, end: 6829, },
  { start: 6990, end: 6991, },
  { start: 7002, end: 7008, },
  { start: 7037, end: 7039, },
  { start: 7164, end: 7167, },
  { start: 7227, end: 7231, },
  { start: 7294, end: 7295, },
  { start: 7360, end: 7367, },
  { start: 7379, end: 7379, },
  { start: 8208, end: 8231, },
  { start: 8240, end: 8259, },
  { start: 8261, end: 8273, },
  { start: 8275, end: 8286, },
  { start: 8317, end: 8318, },
  { start: 8333, end: 8334, },
  { start: 8968, end: 8971, },
  { start: 9001, end: 9002, },
  { start: 10088, end: 10101, },
  { start: 10181, end: 10182, },
  { start: 10214, end: 10223, },
  { start: 10627, end: 10648, },
  { start: 10712, end: 10715, },
  { start: 10748, end: 10749, },
  { start: 11513, end: 11516, },
  { start: 11518, end: 11519, },
  { start: 11632, end: 11632, },
  { start: 11776, end: 11822, },
  { start: 11824, end: 11855, },
  { start: 11858, end: 11869, },
  { start: 12289, end: 12291, },
  { start: 12296, end: 12305, },
  { start: 12308, end: 12319, },
  { start: 12336, end: 12336, },
  { start: 12349, end: 12349, },
  { start: 12448, end: 12448, },
  { start: 12539, end: 12539, },
  { start: 42238, end: 42239, },
  { start: 42509, end: 42511, },
  { start: 42611, end: 42611, },
  { start: 42622, end: 42622, },
  { start: 42738, end: 42743, },
  { start: 43124, end: 43127, },
  { start: 43214, end: 43215, },
  { start: 43256, end: 43258, },
  { start: 43260, end: 43260, },
  { start: 43310, end: 43311, },
  { start: 43359, end: 43359, },
  { start: 43457, end: 43469, },
  { start: 43486, end: 43487, },
  { start: 43612, end: 43615, },
  { start: 43742, end: 43743, },
  { start: 43760, end: 43761, },
  { start: 44011, end: 44011, },
  { start: 64830, end: 64831, },
  { start: 65040, end: 65049, },
  { start: 65072, end: 65106, },
  { start: 65108, end: 65121, },
  { start: 65123, end: 65123, },
  { start: 65128, end: 65128, },
  { start: 65130, end: 65131, },
  { start: 65281, end: 65283, },
  { start: 65285, end: 65290, },
  { start: 65292, end: 65295, },
  { start: 65306, end: 65307, },
  { start: 65311, end: 65312, },
  { start: 65339, end: 65341, },
  { start: 65343, end: 65343, },
  { start: 65371, end: 65371, },
  { start: 65373, end: 65373, },
  { start: 65375, end: 65381, },
  { start: 65792, end: 65794, },
  { start: 66463, end: 66463, },
  { start: 66512, end: 66512, },
  { start: 66927, end: 66927, },
  { start: 67671, end: 67671, },
  { start: 67871, end: 67871, },
  { start: 67903, end: 67903, },
  { start: 68176, end: 68184, },
  { start: 68223, end: 68223, },
  { start: 68336, end: 68342, },
  { start: 68409, end: 68415, },
  { start: 68505, end: 68508, },
  { start: 68974, end: 68974, },
  { start: 69293, end: 69293, },
  { start: 69328, end: 69328, },
  { start: 69461, end: 69465, },
  { start: 69510, end: 69513, },
  { start: 69703, end: 69709, },
  { start: 69819, end: 69820, },
  { start: 69822, end: 69825, },
  { start: 69952, end: 69955, },
  { start: 70004, end: 70005, },
  { start: 70085, end: 70088, },
  { start: 70093, end: 70093, },
  { start: 70107, end: 70107, },
  { start: 70109, end: 70111, },
  { start: 70200, end: 70205, },
  { start: 70313, end: 70313, },
  { start: 70612, end: 70613, },
  { start: 70615, end: 70616, },
  { start: 70731, end: 70735, },
  { start: 70746, end: 70747, },
  { start: 70749, end: 70749, },
  { start: 70854, end: 70854, },
  { start: 71105, end: 71127, },
  { start: 71233, end: 71235, },
  { start: 71264, end: 71276, },
  { start: 71353, end: 71353, },
  { start: 71484, end: 71486, },
  { start: 71739, end: 71739, },
  { start: 72004, end: 72006, },
  { start: 72162, end: 72162, },
  { start: 72255, end: 72262, },
  { start: 72346, end: 72348, },
  { start: 72350, end: 72354, },
  { start: 72448, end: 72457, },
  { start: 72673, end: 72673, },
  { start: 72769, end: 72773, },
  { start: 72816, end: 72817, },
  { start: 73463, end: 73464, },
  { start: 73539, end: 73551, },
  { start: 73727, end: 73727, },
  { start: 74864, end: 74868, },
  { start: 77809, end: 77810, },
  { start: 92782, end: 92783, },
  { start: 92917, end: 92917, },
  { start: 92983, end: 92987, },
  { start: 92996, end: 92996, },
  { start: 93549, end: 93551, },
  { start: 93847, end: 93850, },
  { start: 94178, end: 94178, },
  { start: 113823, end: 113823, },
  { start: 121479, end: 121483, },
  { start: 124415, end: 124415, },
  { start: 125278, end: 125279, },
]

///|
let unicode_Pc : Array[UnicodeRange] = [
  { start: 95, end: 95, },
  { start: 8255, end: 8256, },
  { start: 8276, end: 8276, },
  { start: 65075, end: 65076, },
  { start: 65101, end: 65103, },
  { start: 65343, end: 65343, },
]

///|
let unicode_Pd : Array[UnicodeRange] = [
  { start: 45, end: 45, },
  { start: 1418, end: 1418, },
  { start: 1470, end: 1470, },
  { start: 5120, end: 5120, },
  { start: 6150, end: 6150, },
  { start: 8208, end: 8213, },
  { start: 11799, end: 11799, },
  { start: 11802, end: 11802, },
  { start: 11834, end: 11835, },
  { start: 11840, end: 11840, },
  { start: 11869, end: 11869, },
  { start: 12316, end: 12316, },
  { start: 12336, end: 12336, },
  { start: 12448, end: 12448, },
  { start: 65073, end: 65074, },
  { start: 65112, end: 65112, },
  { start: 65123, end: 65123, },
  { start: 65293, end: 65293, },
  { start: 68974, end: 68974, },
  { start: 69293, end: 69293, },
]

///|
let unicode_Pe : Array[UnicodeRange] = [
  { start: 41, end: 41, },
  { start: 93, end: 93, },
  { start: 125, end: 125, },
  { start: 3899, end: 3899, },
  { start: 3901, end: 3901, },
  { start: 5788, end: 5788, },
  { start: 8262, end: 8262, },
  { start: 8318, end: 8318, },
  { start: 8334, end: 8334, },
  { start: 8969, end: 8969, },
  { start: 8971, end: 8971, },
  { start: 9002, end: 9002, },
  { start: 10089, end: 10089, },
  { start: 10091, end: 10091, },
  { start: 10093, end: 10093, },
  { start: 10095, end: 10095, },
  { start: 10097, end: 10097, },
  { start: 10099, end: 10099, },
  { start: 10101, end: 10101, },
  { start: 10182, end: 10182, },
  { start: 10215, end: 10215, },
  { start: 10217, end: 10217, },
  { start: 10219, end: 10219, },
  { start: 10221, end: 10221, },
  { start: 10223, end: 10223, },
  { start: 10628, end: 10628, },
  { start: 10630, end: 10630, },
  { start: 10632, end: 10632, },
  { start: 10634, end: 10634, },
  { start: 10636, end: 10636, },
  { start: 10638, end: 10638, },
  { start: 10640, end: 10640, },
  { start: 10642, end: 10642, },
  { start: 10644, end: 10644, },
  { start: 10646, end: 10646, },
  { start: 10648, end: 10648, },
  { start: 10713, end: 10713, },
  { start: 10715, end: 10715, },
  { start: 10749, end: 10749, },
  { start: 11811, end: 11811, },
  { start: 11813, end: 11813, },
  { start: 11815, end: 11815, },
  { start: 11817, end: 11817, },
  { start: 11862, end: 11862, },
  { start: 11864, end: 11864, },
  { start: 11866, end: 11866, },
  { start: 11868, end: 11868, },
  { start: 12297, end: 12297, },
  { start: 12299, end: 12299, },
  { start: 12301, end: 12301, },
  { start: 12303, end: 12303, },
  { start: 12305, end: 12305, },
  { start: 12309, end: 12309, },
  { start: 12311, end: 12311, },
  { start: 12313, end: 12313, },
  { start: 12315, end: 12315, },
  { start: 12318, end: 12319, },
  { start: 64830, end: 64830, },
  { start: 65048, end: 65048, },
  { start: 65078, end: 65078, },
  { start: 65080, end: 65080, },
  { start: 65082, end: 65082, },
  { start: 65084, end: 65084, },
  { start: 65086, end: 65086, },
  { start: 65088, end: 65088, },
  { start: 65090, end: 65090, },
  { start: 65092, end: 65092, },
  { start: 65096, end: 65096, },
  { start: 65114, end: 65114, },
  { start: 65116, end: 65116, },
  { start: 65118, end: 65118, },
  { start: 65289, end: 65289, },
  { start: 65341, end: 65341, },
  { start: 65373, end: 65373, },
  { start: 65376, end: 65376, },
  { start: 65379, end: 65379, },
]

///|
let unicode_Pf : Array[UnicodeRange] = [
  { start: 187, end: 187, },
  { start: 8217, end: 8217, },
  { start: 8221, end: 8221, },
  { start: 8250, end: 8250, },
  { start: 11779, end: 11779, },
  { start: 11781, end: 11781, },
  { start: 11786, end: 11786, },
  { start: 11789, end: 11789, },
  { start: 11805, end: 11805, },
  { start: 11809, end: 11809, },
]

///|
let unicode_Pi : Array[UnicodeRange] = [
  { start: 171, end: 171, },
  { start: 8216, end: 8216, },
  { start: 8219, end: 8220, },
  { start: 8223, end: 8223, },
  { start: 8249, end: 8249, },
  { start: 11778, end: 11778, },
  { start: 11780, end: 11780, },
  { start: 11785, end: 11785, },
  { start: 11788, end: 11788, },
  { start: 11804, end: 11804, },
  { start: 11808, end: 11808, },
]

///|
let unicode_Po : Array[UnicodeRange] = [
  { start: 33, end: 35, },
  { start: 37, end: 39, },
  { start: 42, end: 42, },
  { start: 44, end: 44, },
  { start: 46, end: 47, },
  { start: 58, end: 59, },
  { start: 63, end: 64, },
  { start: 92, end: 92, },
  { start: 161, end: 161, },
  { start: 167, end: 167, },
  { start: 182, end: 183, },
  { start: 191, end: 191, },
  { start: 894, end: 894, },
  { start: 903, end: 903, },
  { start: 1370, end: 1375, },
  { start: 1417, end: 1417, },
  { start: 1472, end: 1472, },
  { start: 1475, end: 1475, },
  { start: 1478, end: 1478, },
  { start: 1523, end: 1524, },
  { start: 1545, end: 1546, },
  { start: 1548, end: 1549, },
  { start: 1563, end: 1563, },
  { start: 1565, end: 1567, },
  { start: 1642, end: 1645, },
  { start: 1748, end: 1748, },
  { start: 1792, end: 1805, },
  { start: 2039, end: 2041, },
  { start: 2096, end: 2110, },
  { start: 2142, end: 2142, },
  { start: 2404, end: 2405, },
  { start: 2416, end: 2416, },
  { start: 2557, end: 2557, },
  { start: 2678, end: 2678, },
  { start: 2800, end: 2800, },
  { start: 3191, end: 3191, },
  { start: 3204, end: 3204, },
  { start: 3572, end: 3572, },
  { start: 3663, end: 3663, },
  { start: 3674, end: 3675, },
  { start: 3844, end: 3858, },
  { start: 3860, end: 3860, },
  { start: 3973, end: 3973, },
  { start: 4048, end: 4052, },
  { start: 4057, end: 4058, },
  { start: 4170, end: 4175, },
  { start: 4347, end: 4347, },
  { start: 4960, end: 4968, },
  { start: 5742, end: 5742, },
  { start: 5867, end: 5869, },
  { start: 5941, end: 5942, },
  { start: 6100, end: 6102, },
  { start: 6104, end: 6106, },
  { start: 6144, end: 6149, },
  { start: 6151, end: 6154, },
  { start: 6468, end: 6469, },
  { start: 6686, end: 6687, },
  { start: 6816, end: 6822, },
  { start: 6824, end: 6829, },
  { start: 6990, end: 6991, },
  { start: 7002, end: 7008, },
  { start: 7037, end: 7039, },
  { start: 7164, end: 7167, },
  { start: 7227, end: 7231, },
  { start: 7294, end: 7295, },
  { start: 7360, end: 7367, },
  { start: 7379, end: 7379, },
  { start: 8214, end: 8215, },
  { start: 8224, end: 8231, },
  { start: 8240, end: 8248, },
  { start: 8251, end: 8254, },
  { start: 8257, end: 8259, },
  { start: 8263, end: 8273, },
  { start: 8275, end: 8275, },
  { start: 8277, end: 8286, },
  { start: 11513, end: 11516, },
  { start: 11518, end: 11519, },
  { start: 11632, end: 11632, },
  { start: 11776, end: 11777, },
  { start: 11782, end: 11784, },
  { start: 11787, end: 11787, },
  { start: 11790, end: 11798, },
  { start: 11800, end: 11801, },
  { start: 11803, end: 11803, },
  { start: 11806, end: 11807, },
  { start: 11818, end: 11822, },
  { start: 11824, end: 11833, },
  { start: 11836, end: 11839, },
  { start: 11841, end: 11841, },
  { start: 11843, end: 11855, },
  { start: 11858, end: 11860, },
  { start: 12289, end: 12291, },
  { start: 12349, end: 12349, },
  { start: 12539, end: 12539, },
  { start: 42238, end: 42239, },
  { start: 42509, end: 42511, },
  { start: 42611, end: 42611, },
  { start: 42622, end: 42622, },
  { start: 42738, end: 42743, },
  { start: 43124, end: 43127, },
  { start: 43214, end: 43215, },
  { start: 43256, end: 43258, },
  { start: 43260, end: 43260, },
  { start: 43310, end: 43311, },
  { start: 43359, end: 43359, },
  { start: 43457, end: 43469, },
  { start: 43486, end: 43487, },
  { start: 43612, end: 43615, },
  { start: 43742, end: 43743, },
  { start: 43760, end: 43761, },
  { start: 44011, end: 44011, },
  { start: 65040, end: 65046, },
  { start: 65049, end: 65049, },
  { start: 65072, end: 65072, },
  { start: 65093, end: 65094, },
  { start: 65097, end: 65100, },
  { start: 65104, end: 65106, },
  { start: 65108, end: 65111, },
  { start: 65119, end: 65121, },
  { start: 65128, end: 65128, },
  { start: 65130, end: 65131, },
  { start: 65281, end: 65283, },
  { start: 65285, end: 65287, },
  { start: 65290, end: 65290, },
  { start: 65292, end: 65292, },
  { start: 65294, end: 65295, },
  { start: 65306, end: 65307, },
  { start: 65311, end: 65312, },
  { start: 65340, end: 65340, },
  { start: 65377, end: 65377, },
  { start: 65380, end: 65381, },
  { start: 65792, end: 65794, },
  { start: 66463, end: 66463, },
  { start: 66512, end: 66512, },
  { start: 66927, end: 66927, },
  { start: 67671, end: 67671, },
  { start: 67871, end: 67871, },
  { start: 67903, end: 67903, },
  { start: 68176, end: 68184, },
  { start: 68223, end: 68223, },
  { start: 68336, end: 68342, },
  { start: 68409, end: 68415, },
  { start: 68505, end: 68508, },
  { start: 69328, end: 69328, },
  { start: 69461, end: 69465, },
  { start: 69510, end: 69513, },
  { start: 69703, end: 69709, },
  { start: 69819, end: 69820, },
  { start: 69822, end: 69825, },
  { start: 69952, end: 69955, },
  { start: 70004, end: 70005, },
  { start: 70085, end: 70088, },
  { start: 70093, end: 70093, },
  { start: 70107, end: 70107, },
  { start: 70109, end: 70111, },
  { start: 70200, end: 70205, },
  { start: 70313, end: 70313, },
  { start: 70612, end: 70613, },
  { start: 70615, end: 70616, },
  { start: 70731, end: 70735, },
  { start: 70746, end: 70747, },
  { start: 70749, end: 70749, },
  { start: 70854, end: 70854, },
  { start: 71105, end: 71127, },
  { start: 71233, end: 71235, },
  { start: 71264, end: 71276, },
  { start: 71353, end: 71353, },
  { start: 71484, end: 71486, },
  { start: 71739, end: 71739, },
  { start: 72004, end: 72006, },
  { start: 72162, end: 72162, },
  { start: 72255, end: 72262, },
  { start: 72346, end: 72348, },
  { start: 72350, end: 72354, },
  { start: 72448, end: 72457, },
  { start: 72673, end: 72673, },
  { start: 72769, end: 72773, },
  { start: 72816, end: 72817, },
  { start: 73463, end: 73464, },
  { start: 73539, end: 73551, },
  { start: 73727, end: 73727, },
  { start: 74864, end: 74868, },
  { start: 77809, end: 77810, },
  { start: 92782, end: 92783, },
  { start: 92917, end: 92917, },
  { start: 92983, end: 92987, },
  { start: 92996, end: 92996, },
  { start: 93549, end: 93551, },
  { start: 93847, end: 93850, },
  { start: 94178, end: 94178, },
  { start: 113823, end: 113823, },
  { start: 121479, end: 121483, },
  { start: 124415, end: 124415, },
  { start: 125278, end: 125279, },
]

///|
let unicode_Ps : Array[UnicodeRange] = [
  { start: 40, end: 40, },
  { start: 91, end: 91, },
  { start: 123, end: 123, },
  { start: 3898, end: 3898, },
  { start: 3900, end: 3900, },
  { start: 5787, end: 5787, },
  { start: 8218, end: 8218, },
  { start: 8222, end: 8222, },
  { start: 8261, end: 8261, },
  { start: 8317, end: 8317, },
  { start: 8333, end: 8333, },
  { start: 8968, end: 8968, },
  { start: 8970, end: 8970, },
  { start: 9001, end: 9001, },
  { start: 10088, end: 10088, },
  { start: 10090, end: 10090, },
  { start: 10092, end: 10092, },
  { start: 10094, end: 10094, },
  { start: 10096, end: 10096, },
  { start: 10098, end: 10098, },
  { start: 10100, end: 10100, },
  { start: 10181, end: 10181, },
  { start: 10214, end: 10214, },
  { start: 10216, end: 10216, },
  { start: 10218, end: 10218, },
  { start: 10220, end: 10220, },
  { start: 10222, end: 10222, },
  { start: 10627, end: 10627, },
  { start: 10629, end: 10629, },
  { start: 10631, end: 10631, },
  { start: 10633, end: 10633, },
  { start: 10635, end: 10635, },
  { start: 10637, end: 10637, },
  { start: 10639, end: 10639, },
  { start: 10641, end: 10641, },
  { start: 10643, end: 10643, },
  { start: 10645, end: 10645, },
  { start: 10647, end: 10647, },
  { start: 10712, end: 10712, },
  { start: 10714, end: 10714, },
  { start: 10748, end: 10748, },
  { start: 11810, end: 11810, },
  { start: 11812, end: 11812, },
  { start: 11814, end: 11814, },
  { start: 11816, end: 11816, },
  { start: 11842, end: 11842, },
  { start: 11861, end: 11861, },
  { start: 11863, end: 11863, },
  { start: 11865, end: 11865, },
  { start: 11867, end: 11867, },
  { start: 12296, end: 12296, },
  { start: 12298, end: 12298, },
  { start: 12300, end: 12300, },
  { start: 12302, end: 12302, },
  { start: 12304, end: 12304, },
  { start: 12308, end: 12308, },
  { start: 12310, end: 12310, },
  { start: 12312, end: 12312, },
  { start: 12314, end: 12314, },
  { start: 12317, end: 12317, },
  { start: 64831, end: 64831, },
  { start: 65047, end: 65047, },
  { start: 65077, end: 65077, },
  { start: 65079, end: 65079, },
  { start: 65081, end: 65081, },
  { start: 65083, end: 65083, },
  { start: 65085, end: 65085, },
  { start: 65087, end: 65087, },
  { start: 65089, end: 65089, },
  { start: 65091, end: 65091, },
  { start: 65095, end: 65095, },
  { start: 65113, end: 65113, },
  { start: 65115, end: 65115, },
  { start: 65117, end: 65117, },
  { start: 65288, end: 65288, },
  { start: 65339, end: 65339, },
  { start: 65371, end: 65371, },
  { start: 65375, end: 65375, },
  { start: 65378, end: 65378, },
]

///|
let unicode_S : Array[UnicodeRange] = [
  { start: 36, end: 36, },
  { start: 43, end: 43, },
  { start: 60, end: 62, },
  { start: 94, end: 94, },
  { start: 96, end: 96, },
  { start: 124, end: 124, },
  { start: 126, end: 126, },
  { start: 162, end: 166, },
  { start: 168, end: 169, },
  { start: 172, end: 172, },
  { start: 174, end: 177, },
  { start: 180, end: 180, },
  { start: 184, end: 184, },
  { start: 215, end: 215, },
  { start: 247, end: 247, },
  { start: 706, end: 709, },
  { start: 722, end: 735, },
  { start: 741, end: 747, },
  { start: 749, end: 749, },
  { start: 751, end: 767, },
  { start: 885, end: 885, },
  { start: 900, end: 901, },
  { start: 1014, end: 1014, },
  { start: 1154, end: 1154, },
  { start: 1421, end: 1423, },
  { start: 1542, end: 1544, },
  { start: 1547, end: 1547, },
  { start: 1550, end: 1551, },
  { start: 1758, end: 1758, },
  { start: 1769, end: 1769, },
  { start: 1789, end: 1790, },
  { start: 2038, end: 2038, },
  { start: 2046, end: 2047, },
  { start: 2184, end: 2184, },
  { start: 2546, end: 2547, },
  { start: 2554, end: 2555, },
  { start: 2801, end: 2801, },
  { start: 2928, end: 2928, },
  { start: 3059, end: 3066, },
  { start: 3199, end: 3199, },
  { start: 3407, end: 3407, },
  { start: 3449, end: 3449, },
  { start: 3647, end: 3647, },
  { start: 3841, end: 3843, },
  { start: 3859, end: 3859, },
  { start: 3861, end: 3863, },
  { start: 3866, end: 3871, },
  { start: 3892, end: 3892, },
  { start: 3894, end: 3894, },
  { start: 3896, end: 3896, },
  { start: 4030, end: 4037, },
  { start: 4039, end: 4044, },
  { start: 4046, end: 4047, },
  { start: 4053, end: 4056, },
  { start: 4254, end: 4255, },
  { start: 5008, end: 5017, },
  { start: 5741, end: 5741, },
  { start: 6107, end: 6107, },
  { start: 6464, end: 6464, },
  { start: 6622, end: 6655, },
  { start: 7009, end: 7018, },
  { start: 7028, end: 7036, },
  { start: 8125, end: 8125, },
  { start: 8127, end: 8129, },
  { start: 8141, end: 8143, },
  { start: 8157, end: 8159, },
  { start: 8173, end: 8175, },
  { start: 8189, end: 8190, },
  { start: 8260, end: 8260, },
  { start: 8274, end: 8274, },
  { start: 8314, end: 8316, },
  { start: 8330, end: 8332, },
  { start: 8352, end: 8385, },
  { start: 8448, end: 8449, },
  { start: 8451, end: 8454, },
  { start: 8456, end: 8457, },
  { start: 8468, end: 8468, },
  { start: 8470, end: 8472, },
  { start: 8478, end: 8483, },
  { start: 8485, end: 8485, },
  { start: 8487, end: 8487, },
  { start: 8489, end: 8489, },
  { start: 8494, end: 8494, },
  { start: 8506, end: 8507, },
  { start: 8512, end: 8516, },
  { start: 8522, end: 8525, },
  { start: 8527, end: 8527, },
  { start: 8586, end: 8587, },
  { start: 8592, end: 8967, },
  { start: 8972, end: 9000, },
  { start: 9003, end: 9257, },
  { start: 9280, end: 9290, },
  { start: 9372, end: 9449, },
  { start: 9472, end: 10087, },
  { start: 10132, end: 10180, },
  { start: 10183, end: 10213, },
  { start: 10224, end: 10626, },
  { start: 10649, end: 10711, },
  { start: 10716, end: 10747, },
  { start: 10750, end: 11123, },
  { start: 11126, end: 11263, },
  { start: 11493, end: 11498, },
  { start: 11856, end: 11857, },
  { start: 11904, end: 11929, },
  { start: 11931, end: 12019, },
  { start: 12032, end: 12245, },
  { start: 12272, end: 12287, },
  { start: 12292, end: 12292, },
  { start: 12306, end: 12307, },
  { start: 12320, end: 12320, },
  { start: 12342, end: 12343, },
  { start: 12350, end: 12351, },
  { start: 12443, end: 12444, },
  { start: 12688, end: 12689, },
  { start: 12694, end: 12703, },
  { start: 12736, end: 12773, },
  { start: 12783, end: 12783, },
  { start: 12800, end: 12830, },
  { start: 12842, end: 12871, },
  { start: 12880, end: 12880, },
  { start: 12896, end: 12927, },
  { start: 12938, end: 12976, },
  { start: 12992, end: 13311, },
  { start: 19904, end: 19967, },
  { start: 42128, end: 42182, },
  { start: 42752, end: 42774, },
  { start: 42784, end: 42785, },
  { start: 42889, end: 42890, },
  { start: 43048, end: 43051, },
  { start: 43062, end: 43065, },
  { start: 43639, end: 43641, },
  { start: 43867, end: 43867, },
  { start: 43882, end: 43883, },
  { start: 64297, end: 64297, },
  { start: 64434, end: 64466, },
  { start: 64832, end: 64847, },
  { start: 64912, end: 64913, },
  { start: 64968, end: 64975, },
  { start: 65020, end: 65023, },
  { start: 65122, end: 65122, },
  { start: 65124, end: 65126, },
  { start: 65129, end: 65129, },
  { start: 65284, end: 65284, },
  { start: 65291, end: 65291, },
  { start: 65308, end: 65310, },
  { start: 65342, end: 65342, },
  { start: 65344, end: 65344, },
  { start: 65372, end: 65372, },
  { start: 65374, end: 65374, },
  { start: 65504, end: 65510, },
  { start: 65512, end: 65518, },
  { start: 65532, end: 65533, },
  { start: 65847, end: 65855, },
  { start: 65913, end: 65929, },
  { start: 65932, end: 65934, },
  { start: 65936, end: 65948, },
  { start: 65952, end: 65952, },
  { start: 66000, end: 66044, },
  { start: 67703, end: 67704, },
  { start: 68296, end: 68296, },
  { start: 69006, end: 69007, },
  { start: 69329, end: 69336, },
  { start: 71487, end: 71487, },
  { start: 73685, end: 73713, },
  { start: 92988, end: 92991, },
  { start: 92997, end: 92997, },
  { start: 113820, end: 113820, },
  { start: 117760, end: 117999, },
  { start: 118010, end: 118012, },
  { start: 118016, end: 118451, },
  { start: 118458, end: 118480, },
  { start: 118496, end: 118512, },
  { start: 118608, end: 118723, },
  { start: 118784, end: 119029, },
  { start: 119040, end: 119078, },
  { start: 119081, end: 119140, },
  { start: 119146, end: 119148, },
  { start: 119171, end: 119172, },
  { start: 119180, end: 119209, },
  { start: 119214, end: 119274, },
  { start: 119296, end: 119361, },
  { start: 119365, end: 119365, },
  { start: 119552, end: 119638, },
  { start: 120513, end: 120513, },
  { start: 120539, end: 120539, },
  { start: 120571, end: 120571, },
  { start: 120597, end: 120597, },
  { start: 120629, end: 120629, },
  { start: 120655, end: 120655, },
  { start: 120687, end: 120687, },
  { start: 120713, end: 120713, },
  { start: 120745, end: 120745, },
  { start: 120771, end: 120771, },
  { start: 120832, end: 121343, },
  { start: 121399, end: 121402, },
  { start: 121453, end: 121460, },
  { start: 121462, end: 121475, },
  { start: 121477, end: 121478, },
  { start: 123215, end: 123215, },
  { start: 123647, end: 123647, },
  { start: 126124, end: 126124, },
  { start: 126128, end: 126128, },
  { start: 126254, end: 126254, },
  { start: 126704, end: 126705, },
  { start: 126976, end: 127019, },
  { start: 127024, end: 127123, },
  { start: 127136, end: 127150, },
  { start: 127153, end: 127167, },
  { start: 127169, end: 127183, },
  { start: 127185, end: 127221, },
  { start: 127245, end: 127405, },
  { start: 127462, end: 127490, },
  { start: 127504, end: 127547, },
  { start: 127552, end: 127560, },
  { start: 127568, end: 127569, },
  { start: 127584, end: 127589, },
  { start: 127744, end: 128728, },
  { start: 128732, end: 128748, },
  { start: 128752, end: 128764, },
  { start: 128768, end: 128985, },
  { start: 128992, end: 129003, },
  { start: 129008, end: 129008, },
  { start: 129024, end: 129035, },
  { start: 129040, end: 129095, },
  { start: 129104, end: 129113, },
  { start: 129120, end: 129159, },
  { start: 129168, end: 129197, },
  { start: 129200, end: 129211, },
  { start: 129216, end: 129217, },
  { start: 129232, end: 129240, },
  { start: 129280, end: 129623, },
  { start: 129632, end: 129645, },
  { start: 129648, end: 129660, },
  { start: 129664, end: 129674, },
  { start: 129678, end: 129734, },
  { start: 129736, end: 129736, },
  { start: 129741, end: 129756, },
  { start: 129759, end: 129770, },
  { start: 129775, end: 129784, },
  { start: 129792, end: 129938, },
  { start: 129940, end: 130031, },
  { start: 130042, end: 130042, },
]

///|
let unicode_Sc : Array[UnicodeRange] = [
  { start: 36, end: 36, },
  { start: 162, end: 165, },
  { start: 1423, end: 1423, },
  { start: 1547, end: 1547, },
  { start: 2046, end: 2047, },
  { start: 2546, end: 2547, },
  { start: 2555, end: 2555, },
  { start: 2801, end: 2801, },
  { start: 3065, end: 3065, },
  { start: 3647, end: 3647, },
  { start: 6107, end: 6107, },
  { start: 8352, end: 8385, },
  { start: 43064, end: 43064, },
  { start: 65020, end: 65020, },
  { start: 65129, end: 65129, },
  { start: 65284, end: 65284, },
  { start: 65504, end: 65505, },
  { start: 65509, end: 65510, },
  { start: 73693, end: 73696, },
  { start: 123647, end: 123647, },
  { start: 126128, end: 126128, },
]

///|
let unicode_Sk : Array[UnicodeRange] = [
  { start: 94, end: 94, },
  { start: 96, end: 96, },
  { start: 168, end: 168, },
  { start: 175, end: 175, },
  { start: 180, end: 180, },
  { start: 184, end: 184, },
  { start: 706, end: 709, },
  { start: 722, end: 735, },
  { start: 741, end: 747, },
  { start: 749, end: 749, },
  { start: 751, end: 767, },
  { start: 885, end: 885, },
  { start: 900, end: 901, },
  { start: 2184, end: 2184, },
  { start: 8125, end: 8125, },
  { start: 8127, end: 8129, },
  { start: 8141, end: 8143, },
  { start: 8157, end: 8159, },
  { start: 8173, end: 8175, },
  { start: 8189, end: 8190, },
  { start: 12443, end: 12444, },
  { start: 42752, end: 42774, },
  { start: 42784, end: 42785, },
  { start: 42889, end: 42890, },
  { start: 43867, end: 43867, },
  { start: 43882, end: 43883, },
  { start: 64434, end: 64450, },
  { start: 65342, end: 65342, },
  { start: 65344, end: 65344, },
  { start: 65507, end: 65507, },
  { start: 127995, end: 127999, },
]

///|
let unicode_Sm : Array[UnicodeRange] = [
  { start: 43, end: 43, },
  { start: 60, end: 62, },
  { start: 124, end: 124, },
  { start: 126, end: 126, },
  { start: 172, end: 172, },
  { start: 177, end: 177, },
  { start: 215, end: 215, },
  { start: 247, end: 247, },
  { start: 1014, end: 1014, },
  { start: 1542, end: 1544, },
  { start: 8260, end: 8260, },
  { start: 8274, end: 8274, },
  { start: 8314, end: 8316, },
  { start: 8330, end: 8332, },
  { start: 8472, end: 8472, },
  { start: 8512, end: 8516, },
  { start: 8523, end: 8523, },
  { start: 8592, end: 8596, },
  { start: 8602, end: 8603, },
  { start: 8608, end: 8608, },
  { start: 8611, end: 8611, },
  { start: 8614, end: 8614, },
  { start: 8622, end: 8622, },
  { start: 8654, end: 8655, },
  { start: 8658, end: 8658, },
  { start: 8660, end: 8660, },
  { start: 8692, end: 8959, },
  { start: 8992, end: 8993, },
  { start: 9084, end: 9084, },
  { start: 9115, end: 9139, },
  { start: 9180, end: 9185, },
  { start: 9655, end: 9655, },
  { start: 9665, end: 9665, },
  { start: 9720, end: 9727, },
  { start: 9839, end: 9839, },
  { start: 10176, end: 10180, },
  { start: 10183, end: 10213, },
  { start: 10224, end: 10239, },
  { start: 10496, end: 10626, },
  { start: 10649, end: 10711, },
  { start: 10716, end: 10747, },
  { start: 10750, end: 11007, },
  { start: 11056, end: 11076, },
  { start: 11079, end: 11084, },
  { start: 64297, end: 64297, },
  { start: 65122, end: 65122, },
  { start: 65124, end: 65126, },
  { start: 65291, end: 65291, },
  { start: 65308, end: 65310, },
  { start: 65372, end: 65372, },
  { start: 65374, end: 65374, },
  { start: 65506, end: 65506, },
  { start: 65513, end: 65516, },
  { start: 69006, end: 69007, },
  { start: 118512, end: 118512, },
  { start: 120513, end: 120513, },
  { start: 120539, end: 120539, },
  { start: 120571, end: 120571, },
  { start: 120597, end: 120597, },
  { start: 120629, end: 120629, },
  { start: 120655, end: 120655, },
  { start: 120687, end: 120687, },
  { start: 120713, end: 120713, },
  { start: 120745, end: 120745, },
  { start: 120771, end: 120771, },
  { start: 126704, end: 126705, },
  { start: 129232, end: 129240, },
]

///|
let unicode_So : Array[UnicodeRange] = [
  { start: 166, end: 166, },
  { start: 169, end: 169, },
  { start: 174, end: 174, },
  { start: 176, end: 176, },
  { start: 1154, end: 1154, },
  { start: 1421, end: 1422, },
  { start: 1550, end: 1551, },
  { start: 1758, end: 1758, },
  { start: 1769, end: 1769, },
  { start: 1789, end: 1790, },
  { start: 2038, end: 2038, },
  { start: 2554, end: 2554, },
  { start: 2928, end: 2928, },
  { start: 3059, end: 3064, },
  { start: 3066, end: 3066, },
  { start: 3199, end: 3199, },
  { start: 3407, end: 3407, },
  { start: 3449, end: 3449, },
  { start: 3841, end: 3843, },
  { start: 3859, end: 3859, },
  { start: 3861, end: 3863, },
  { start: 3866, end: 3871, },
  { start: 3892, end: 3892, },
  { start: 3894, end: 3894, },
  { start: 3896, end: 3896, },
  { start: 4030, end: 4037, },
  { start: 4039, end: 4044, },
  { start: 4046, end: 4047, },
  { start: 4053, end: 4056, },
  { start: 4254, end: 4255, },
  { start: 5008, end: 5017, },
  { start: 5741, end: 5741, },
  { start: 6464, end: 6464, },
  { start: 6622, end: 6655, },
  { start: 7009, end: 7018, },
  { start: 7028, end: 7036, },
  { start: 8448, end: 8449, },
  { start: 8451, end: 8454, },
  { start: 8456, end: 8457, },
  { start: 8468, end: 8468, },
  { start: 8470, end: 8471, },
  { start: 8478, end: 8483, },
  { start: 8485, end: 8485, },
  { start: 8487, end: 8487, },
  { start: 8489, end: 8489, },
  { start: 8494, end: 8494, },
  { start: 8506, end: 8507, },
  { start: 8522, end: 8522, },
  { start: 8524, end: 8525, },
  { start: 8527, end: 8527, },
  { start: 8586, end: 8587, },
  { start: 8597, end: 8601, },
  { start: 8604, end: 8607, },
  { start: 8609, end: 8610, },
  { start: 8612, end: 8613, },
  { start: 8615, end: 8621, },
  { start: 8623, end: 8653, },
  { start: 8656, end: 8657, },
  { start: 8659, end: 8659, },
  { start: 8661, end: 8691, },
  { start: 8960, end: 8967, },
  { start: 8972, end: 8991, },
  { start: 8994, end: 9000, },
  { start: 9003, end: 9083, },
  { start: 9085, end: 9114, },
  { start: 9140, end: 9179, },
  { start: 9186, end: 9257, },
  { start: 9280, end: 9290, },
  { start: 9372, end: 9449, },
  { start: 9472, end: 9654, },
  { start: 9656, end: 9664, },
  { start: 9666, end: 9719, },
  { start: 9728, end: 9838, },
  { start: 9840, end: 10087, },
  { start: 10132, end: 10175, },
  { start: 10240, end: 10495, },
  { start: 11008, end: 11055, },
  { start: 11077, end: 11078, },
  { start: 11085, end: 11123, },
  { start: 11126, end: 11263, },
  { start: 11493, end: 11498, },
  { start: 11856, end: 11857, },
  { start: 11904, end: 11929, },
  { start: 11931, end: 12019, },
  { start: 12032, end: 12245, },
  { start: 12272, end: 12287, },
  { start: 12292, end: 12292, },
  { start: 12306, end: 12307, },
  { start: 12320, end: 12320, },
  { start: 12342, end: 12343, },
  { start: 12350, end: 12351, },
  { start: 12688, end: 12689, },
  { start: 12694, end: 12703, },
  { start: 12736, end: 12773, },
  { start: 12783, end: 12783, },
  { start: 12800, end: 12830, },
  { start: 12842, end: 12871, },
  { start: 12880, end: 12880, },
  { start: 12896, end: 12927, },
  { start: 12938, end: 12976, },
  { start: 12992, end: 13311, },
  { start: 19904, end: 19967, },
  { start: 42128, end: 42182, },
  { start: 43048, end: 43051, },
  { start: 43062, end: 43063, },
  { start: 43065, end: 43065, },
  { start: 43639, end: 43641, },
  { start: 64451, end: 64466, },
  { start: 64832, end: 64847, },
  { start: 64912, end: 64913, },
  { start: 64968, end: 64975, },
  { start: 65021, end: 65023, },
  { start: 65508, end: 65508, },
  { start: 65512, end: 65512, },
  { start: 65517, end: 65518, },
  { start: 65532, end: 65533, },
  { start: 65847, end: 65855, },
  { start: 65913, end: 65929, },
  { start: 65932, end: 65934, },
  { start: 65936, end: 65948, },
  { start: 65952, end: 65952, },
  { start: 66000, end: 66044, },
  { start: 67703, end: 67704, },
  { start: 68296, end: 68296, },
  { start: 69329, end: 69336, },
  { start: 71487, end: 71487, },
  { start: 73685, end: 73692, },
  { start: 73697, end: 73713, },
  { start: 92988, end: 92991, },
  { start: 92997, end: 92997, },
  { start: 113820, end: 113820, },
  { start: 117760, end: 117999, },
  { start: 118010, end: 118012, },
  { start: 118016, end: 118451, },
  { start: 118458, end: 118480, },
  { start: 118496, end: 118511, },
  { start: 118608, end: 118723, },
  { start: 118784, end: 119029, },
  { start: 119040, end: 119078, },
  { start: 119081, end: 119140, },
  { start: 119146, end: 119148, },
  { start: 119171, end: 119172, },
  { start: 119180, end: 119209, },
  { start: 119214, end: 119274, },
  { start: 119296, end: 119361, },
  { start: 119365, end: 119365, },
  { start: 119552, end: 119638, },
  { start: 120832, end: 121343, },
  { start: 121399, end: 121402, },
  { start: 121453, end: 121460, },
  { start: 121462, end: 121475, },
  { start: 121477, end: 121478, },
  { start: 123215, end: 123215, },
  { start: 126124, end: 126124, },
  { start: 126254, end: 126254, },
  { start: 126976, end: 127019, },
  { start: 127024, end: 127123, },
  { start: 127136, end: 127150, },
  { start: 127153, end: 127167, },
  { start: 127169, end: 127183, },
  { start: 127185, end: 127221, },
  { start: 127245, end: 127405, },
  { start: 127462, end: 127490, },
  { start: 127504, end: 127547, },
  { start: 127552, end: 127560, },
  { start: 127568, end: 127569, },
  { start: 127584, end: 127589, },
  { start: 127744, end: 127994, },
  { start: 128000, end: 128728, },
  { start: 128732, end: 128748, },
  { start: 128752, end: 128764, },
  { start: 128768, end: 128985, },
  { start: 128992, end: 129003, },
  { start: 129008, end: 129008, },
  { start: 129024, end: 129035, },
  { start: 129040, end: 129095, },
  { start: 129104, end: 129113, },
  { start: 129120, end: 129159, },
  { start: 129168, end: 129197, },
  { start: 129200, end: 129211, },
  { start: 129216, end: 129217, },
  { start: 129280, end: 129623, },
  { start: 129632, end: 129645, },
  { start: 129648, end: 129660, },
  { start: 129664, end: 129674, },
  { start: 129678, end: 129734, },
  { start: 129736, end: 129736, },
  { start: 129741, end: 129756, },
  { start: 129759, end: 129770, },
  { start: 129775, end: 129784, },
  { start: 129792, end: 129938, },
  { start: 129940, end: 130031, },
  { start: 130042, end: 130042, },
]

///|
let unicode_Z : Array[UnicodeRange] = [
  { start: 32, end: 32, },
  { start: 160, end: 160, },
  { start: 5760, end: 5760, },
  { start: 8192, end: 8202, },
  { start: 8232, end: 8233, },
  { start: 8239, end: 8239, },
  { start: 8287, end: 8287, },
  { start: 12288, end: 12288, },
]

///|
let unicode_Zl : Array[UnicodeRange] = [{ start: 8232, end: 8232, }]

///|
let unicode_Zp : Array[UnicodeRange] = [{ start: 8233, end: 8233, }]

///|
let unicode_Zs : Array[UnicodeRange] = [
  { start: 32, end: 32, },
  { start: 160, end: 160, },
  { start: 5760, end: 5760, },
  { start: 8192, end: 8202, },
  { start: 8239, end: 8239, },
  { start: 8287, end: 8287, },
  { start: 12288, end: 12288, },
]

///|
fn unicode_category_ranges(category : String) -> Array[UnicodeRange] {
  match category {
    "C" => unicode_C
    "Cc" => unicode_Cc
    "Cf" => unicode_Cf
    "Co" => unicode_Co
    "Cs" => unicode_Cs
    "L" => unicode_L
    "Ll" => unicode_Ll
    "Lm" => unicode_Lm
    "Lo" => unicode_Lo
    "Lt" => unicode_Lt
    "Lu" => unicode_Lu
    "M" => unicode_M
    "Mc" => unicode_Mc
    "Me" => unicode_Me
    "Mn" => unicode_Mn
    "N" => unicode_N
    "Nd" => unicode_Nd
    "Nl" => unicode_Nl
    "No" => unicode_No
    "P" => unicode_P
    "Pc" => unicode_Pc
    "Pd" => unicode_Pd
    "Pe" => unicode_Pe
    "Pf" => unicode_Pf
    "Pi" => unicode_Pi
    "Po" => unicode_Po
    "Ps" => unicode_Ps
    "S" => unicode_S
    "Sc" => unicode_Sc
    "Sk" => unicode_Sk
    "Sm" => unicode_Sm
    "So" => unicode_So
    "Z" => unicode_Z
    "Zl" => unicode_Zl
    "Zp" => unicode_Zp
    "Zs" => unicode_Zs
    _ => []
  }
}

///|
/// Errors returned while deriving boundary cases from Unicode category data.
pub(all) enum UnicodeCorpusError {
  UnknownCategory(String)
  InvalidCaseLimit
  NoScalarSamples(String)
} derive(Eq, Debug)

///|
pub extend UnicodeCorpusError with Eq::{equal, not_equal}

///|
pub extend UnicodeCorpusError with @moonbitlang/core/debug.Debug::{to_repr}

///|
/// Build deterministic positive and adjacent-negative cases from the Unicode
/// 17.0 category range boundaries. The limit caps the number of cases emitted.
/// This is a test-corpus oracle, not a Unicode classifier used at runtime.
pub fn unicode_category_cases(
  category~ : String,
  max_cases~ : Int32,
) -> Result[Array[ContractCase], UnicodeCorpusError] {
  if max_cases < 1 {
    return Err(UnicodeCorpusError::InvalidCaseLimit)
  }
  let ranges = unicode_category_ranges(category)
  if ranges.is_empty() {
    return Err(UnicodeCorpusError::UnknownCategory(category))
  }
  let pattern = "^\\p{\{category}}$"
  let cases : Array[ContractCase] = []
  let mut ordinal = 0
  for range in ranges {
    if cases.length() >= max_cases {
      break
    }
    append_unicode_case(cases, category, ordinal, range.start, true, pattern)
    ordinal = ordinal + 1
    if cases.length() < max_cases && range.start > 0 {
      append_unicode_case(
        cases,
        category,
        ordinal,
        range.start - 1,
        false,
        pattern,
      )
      ordinal = ordinal + 1
    }
    if cases.length() < max_cases && range.end != range.start {
      append_unicode_case(cases, category, ordinal, range.end, true, pattern)
      ordinal = ordinal + 1
    }
    if cases.length() < max_cases && range.end < 0x10FFFF {
      append_unicode_case(
        cases,
        category,
        ordinal,
        range.end + 1,
        false,
        pattern,
      )
      ordinal = ordinal + 1
    }
  }
  if cases.is_empty() {
    return Err(UnicodeCorpusError::NoScalarSamples(category))
  }
  Ok(cases)
}

///|
fn append_unicode_case(
  cases : Array[ContractCase],
  category : String,
  ordinal : Int32,
  codepoint : Int32,
  expected_match : Bool,
  pattern : String,
) -> Unit {
  match codepoint.to_char() {
    None => ()
    Some(scalar) => {
      let input = "\{scalar}"
      let id = "unicode-\{category}-\{ordinal}"
      if expected_match {
        cases.push(
          ContractCase::expect_match(id~, pattern~, input~, text=input, captures=[]),
        )
      } else {
        cases.push(ContractCase::expect_no_match(id~, pattern~, input~))
      }
    }
  }
}