source: icGREP/icgrep-devel/icgrep/UCD/DerivedCoreProperties.h @ 4812

Last change on this file since 4812 was 4636, checked in by cameron, 4 years ago

Update to Unicode 8.0

File size: 233.1 KB
Line 
1#ifndef DERIVEDCOREPROPERTIES_H
2#define DERIVEDCOREPROPERTIES_H
3/*
4 *  Copyright (c) 2015 International Characters, Inc.
5 *  This software is licensed to the public under the Open Software License 3.0.
6 *  icgrep is a trademark of International Characters, Inc.
7 *
8 *  This file is generated by UCD_properties.py - manual edits may be lost.
9 */
10
11#include "PropertyAliases.h"
12#include "unicode_set.h"
13#include <vector>
14
15namespace UCD {
16    namespace ALPHA_ns {
17        /** Code Point Ranges for Alpha
18        [65, 90], [97, 122], [170, 170], [181, 181], [186, 186], [192, 214],
19        [216, 246], [248, 705], [710, 721], [736, 740], [748, 748],
20        [750, 750], [837, 837], [880, 884], [886, 887], [890, 893],
21        [895, 895], [902, 902], [904, 906], [908, 908], [910, 929],
22        [931, 1013], [1015, 1153], [1162, 1327], [1329, 1366], [1369, 1369],
23        [1377, 1415], [1456, 1469], [1471, 1471], [1473, 1474],
24        [1476, 1477], [1479, 1479], [1488, 1514], [1520, 1522],
25        [1552, 1562], [1568, 1623], [1625, 1631], [1646, 1747],
26        [1749, 1756], [1761, 1768], [1773, 1775], [1786, 1788],
27        [1791, 1791], [1808, 1855], [1869, 1969], [1994, 2026],
28        [2036, 2037], [2042, 2042], [2048, 2071], [2074, 2092],
29        [2112, 2136], [2208, 2228], [2275, 2281], [2288, 2363],
30        [2365, 2380], [2382, 2384], [2389, 2403], [2417, 2435],
31        [2437, 2444], [2447, 2448], [2451, 2472], [2474, 2480],
32        [2482, 2482], [2486, 2489], [2493, 2500], [2503, 2504],
33        [2507, 2508], [2510, 2510], [2519, 2519], [2524, 2525],
34        [2527, 2531], [2544, 2545], [2561, 2563], [2565, 2570],
35        [2575, 2576], [2579, 2600], [2602, 2608], [2610, 2611],
36        [2613, 2614], [2616, 2617], [2622, 2626], [2631, 2632],
37        [2635, 2636], [2641, 2641], [2649, 2652], [2654, 2654],
38        [2672, 2677], [2689, 2691], [2693, 2701], [2703, 2705],
39        [2707, 2728], [2730, 2736], [2738, 2739], [2741, 2745],
40        [2749, 2757], [2759, 2761], [2763, 2764], [2768, 2768],
41        [2784, 2787], [2809, 2809], [2817, 2819], [2821, 2828],
42        [2831, 2832], [2835, 2856], [2858, 2864], [2866, 2867],
43        [2869, 2873], [2877, 2884], [2887, 2888], [2891, 2892],
44        [2902, 2903], [2908, 2909], [2911, 2915], [2929, 2929],
45        [2946, 2947], [2949, 2954], [2958, 2960], [2962, 2965],
46        [2969, 2970], [2972, 2972], [2974, 2975], [2979, 2980],
47        [2984, 2986], [2990, 3001], [3006, 3010], [3014, 3016],
48        [3018, 3020], [3024, 3024], [3031, 3031], [3072, 3075],
49        [3077, 3084], [3086, 3088], [3090, 3112], [3114, 3129],
50        [3133, 3140], [3142, 3144], [3146, 3148], [3157, 3158],
51        [3160, 3162], [3168, 3171], [3201, 3203], [3205, 3212],
52        [3214, 3216], [3218, 3240], [3242, 3251], [3253, 3257],
53        [3261, 3268], [3270, 3272], [3274, 3276], [3285, 3286],
54        [3294, 3294], [3296, 3299], [3313, 3314], [3329, 3331],
55        [3333, 3340], [3342, 3344], [3346, 3386], [3389, 3396],
56        [3398, 3400], [3402, 3404], [3406, 3406], [3415, 3415],
57        [3423, 3427], [3450, 3455], [3458, 3459], [3461, 3478],
58        [3482, 3505], [3507, 3515], [3517, 3517], [3520, 3526],
59        [3535, 3540], [3542, 3542], [3544, 3551], [3570, 3571],
60        [3585, 3642], [3648, 3654], [3661, 3661], [3713, 3714],
61        [3716, 3716], [3719, 3720], [3722, 3722], [3725, 3725],
62        [3732, 3735], [3737, 3743], [3745, 3747], [3749, 3749],
63        [3751, 3751], [3754, 3755], [3757, 3769], [3771, 3773],
64        [3776, 3780], [3782, 3782], [3789, 3789], [3804, 3807],
65        [3840, 3840], [3904, 3911], [3913, 3948], [3953, 3969],
66        [3976, 3991], [3993, 4028], [4096, 4150], [4152, 4152],
67        [4155, 4159], [4176, 4194], [4197, 4200], [4206, 4230],
68        [4238, 4238], [4252, 4253], [4256, 4293], [4295, 4295],
69        [4301, 4301], [4304, 4346], [4348, 4680], [4682, 4685],
70        [4688, 4694], [4696, 4696], [4698, 4701], [4704, 4744],
71        [4746, 4749], [4752, 4784], [4786, 4789], [4792, 4798],
72        [4800, 4800], [4802, 4805], [4808, 4822], [4824, 4880],
73        [4882, 4885], [4888, 4954], [4959, 4959], [4992, 5007],
74        [5024, 5109], [5112, 5117], [5121, 5740], [5743, 5759],
75        [5761, 5786], [5792, 5866], [5870, 5880], [5888, 5900],
76        [5902, 5907], [5920, 5939], [5952, 5971], [5984, 5996],
77        [5998, 6000], [6002, 6003], [6016, 6067], [6070, 6088],
78        [6103, 6103], [6108, 6108], [6176, 6263], [6272, 6314],
79        [6320, 6389], [6400, 6430], [6432, 6443], [6448, 6456],
80        [6480, 6509], [6512, 6516], [6528, 6571], [6576, 6601],
81        [6656, 6683], [6688, 6750], [6753, 6772], [6823, 6823],
82        [6912, 6963], [6965, 6979], [6981, 6987], [7040, 7081],
83        [7084, 7087], [7098, 7141], [7143, 7153], [7168, 7221],
84        [7245, 7247], [7258, 7293], [7401, 7404], [7406, 7411],
85        [7413, 7414], [7424, 7615], [7655, 7668], [7680, 7957],
86        [7960, 7965], [7968, 8005], [8008, 8013], [8016, 8023],
87        [8025, 8025], [8027, 8027], [8029, 8029], [8031, 8061],
88        [8064, 8116], [8118, 8124], [8126, 8126], [8130, 8132],
89        [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172],
90        [8178, 8180], [8182, 8188], [8305, 8305], [8319, 8319],
91        [8336, 8348], [8450, 8450], [8455, 8455], [8458, 8467],
92        [8469, 8469], [8473, 8477], [8484, 8484], [8486, 8486],
93        [8488, 8488], [8490, 8493], [8495, 8505], [8508, 8511],
94        [8517, 8521], [8526, 8526], [8544, 8584], [9398, 9449],
95        [11264, 11310], [11312, 11358], [11360, 11492], [11499, 11502],
96        [11506, 11507], [11520, 11557], [11559, 11559], [11565, 11565],
97        [11568, 11623], [11631, 11631], [11648, 11670], [11680, 11686],
98        [11688, 11694], [11696, 11702], [11704, 11710], [11712, 11718],
99        [11720, 11726], [11728, 11734], [11736, 11742], [11744, 11775],
100        [11823, 11823], [12293, 12295], [12321, 12329], [12337, 12341],
101        [12344, 12348], [12353, 12438], [12445, 12447], [12449, 12538],
102        [12540, 12543], [12549, 12589], [12593, 12686], [12704, 12730],
103        [12784, 12799], [13312, 19893], [19968, 40917], [40960, 42124],
104        [42192, 42237], [42240, 42508], [42512, 42527], [42538, 42539],
105        [42560, 42606], [42612, 42619], [42623, 42735], [42775, 42783],
106        [42786, 42888], [42891, 42925], [42928, 42935], [42999, 43009],
107        [43011, 43013], [43015, 43018], [43020, 43047], [43072, 43123],
108        [43136, 43203], [43250, 43255], [43259, 43259], [43261, 43261],
109        [43274, 43306], [43312, 43346], [43360, 43388], [43392, 43442],
110        [43444, 43455], [43471, 43471], [43488, 43492], [43494, 43503],
111        [43514, 43518], [43520, 43574], [43584, 43597], [43616, 43638],
112        [43642, 43642], [43646, 43710], [43712, 43712], [43714, 43714],
113        [43739, 43741], [43744, 43759], [43762, 43765], [43777, 43782],
114        [43785, 43790], [43793, 43798], [43808, 43814], [43816, 43822],
115        [43824, 43866], [43868, 43877], [43888, 44010], [44032, 55203],
116        [55216, 55238], [55243, 55291], [63744, 64109], [64112, 64217],
117        [64256, 64262], [64275, 64279], [64285, 64296], [64298, 64310],
118        [64312, 64316], [64318, 64318], [64320, 64321], [64323, 64324],
119        [64326, 64433], [64467, 64829], [64848, 64911], [64914, 64967],
120        [65008, 65019], [65136, 65140], [65142, 65276], [65313, 65338],
121        [65345, 65370], [65382, 65470], [65474, 65479], [65482, 65487],
122        [65490, 65495], [65498, 65500], [65536, 65547], [65549, 65574],
123        [65576, 65594], [65596, 65597], [65599, 65613], [65616, 65629],
124        [65664, 65786], [65856, 65908], [66176, 66204], [66208, 66256],
125        [66304, 66335], [66352, 66378], [66384, 66426], [66432, 66461],
126        [66464, 66499], [66504, 66511], [66513, 66517], [66560, 66717],
127        [66816, 66855], [66864, 66915], [67072, 67382], [67392, 67413],
128        [67424, 67431], [67584, 67589], [67592, 67592], [67594, 67637],
129        [67639, 67640], [67644, 67644], [67647, 67669], [67680, 67702],
130        [67712, 67742], [67808, 67826], [67828, 67829], [67840, 67861],
131        [67872, 67897], [67968, 68023], [68030, 68031], [68096, 68099],
132        [68101, 68102], [68108, 68115], [68117, 68119], [68121, 68147],
133        [68192, 68220], [68224, 68252], [68288, 68295], [68297, 68324],
134        [68352, 68405], [68416, 68437], [68448, 68466], [68480, 68497],
135        [68608, 68680], [68736, 68786], [68800, 68850], [69632, 69701],
136        [69762, 69816], [69840, 69864], [69888, 69938], [69968, 70002],
137        [70006, 70006], [70016, 70079], [70081, 70084], [70106, 70106],
138        [70108, 70108], [70144, 70161], [70163, 70196], [70199, 70199],
139        [70272, 70278], [70280, 70280], [70282, 70285], [70287, 70301],
140        [70303, 70312], [70320, 70376], [70400, 70403], [70405, 70412],
141        [70415, 70416], [70419, 70440], [70442, 70448], [70450, 70451],
142        [70453, 70457], [70461, 70468], [70471, 70472], [70475, 70476],
143        [70480, 70480], [70487, 70487], [70493, 70499], [70784, 70849],
144        [70852, 70853], [70855, 70855], [71040, 71093], [71096, 71102],
145        [71128, 71133], [71168, 71230], [71232, 71232], [71236, 71236],
146        [71296, 71349], [71424, 71449], [71453, 71466], [71840, 71903],
147        [71935, 71935], [72384, 72440], [73728, 74649], [74752, 74862],
148        [74880, 75075], [77824, 78894], [82944, 83526], [92160, 92728],
149        [92736, 92766], [92880, 92909], [92928, 92982], [92992, 92995],
150        [93027, 93047], [93053, 93071], [93952, 94020], [94032, 94078],
151        [94099, 94111], [110592, 110593], [113664, 113770],
152        [113776, 113788], [113792, 113800], [113808, 113817],
153        [113822, 113822], [119808, 119892], [119894, 119964],
154        [119966, 119967], [119970, 119970], [119973, 119974],
155        [119977, 119980], [119982, 119993], [119995, 119995],
156        [119997, 120003], [120005, 120069], [120071, 120074],
157        [120077, 120084], [120086, 120092], [120094, 120121],
158        [120123, 120126], [120128, 120132], [120134, 120134],
159        [120138, 120144], [120146, 120485], [120488, 120512],
160        [120514, 120538], [120540, 120570], [120572, 120596],
161        [120598, 120628], [120630, 120654], [120656, 120686],
162        [120688, 120712], [120714, 120744], [120746, 120770],
163        [120772, 120779], [124928, 125124], [126464, 126467],
164        [126469, 126495], [126497, 126498], [126500, 126500],
165        [126503, 126503], [126505, 126514], [126516, 126519],
166        [126521, 126521], [126523, 126523], [126530, 126530],
167        [126535, 126535], [126537, 126537], [126539, 126539],
168        [126541, 126543], [126545, 126546], [126548, 126548],
169        [126551, 126551], [126553, 126553], [126555, 126555],
170        [126557, 126557], [126559, 126559], [126561, 126562],
171        [126564, 126564], [126567, 126570], [126572, 126578],
172        [126580, 126583], [126585, 126588], [126590, 126590],
173        [126592, 126601], [126603, 126619], [126625, 126627],
174        [126629, 126633], [126635, 126651], [127280, 127305],
175        [127312, 127337], [127344, 127369], [131072, 173782],
176        [173824, 177972], [177984, 178205], [178208, 183969],
177        [194560, 195101]**/
178        const UnicodeSet codepoint_set
179            {{{Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Full, 14},
180              {Mixed, 2}, {Empty, 2}, {Mixed, 4}, {Full, 1}, {Mixed, 1},
181              {Full, 4}, {Mixed, 1}, {Full, 4}, {Mixed, 8}, {Full, 1},
182              {Mixed, 2}, {Full, 2}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
183              {Full, 2}, {Mixed, 6}, {Empty, 2}, {Mixed, 1}, {Empty, 1},
184              {Mixed, 1}, {Full, 1}, {Mixed, 22}, {Empty, 1}, {Mixed, 19},
185              {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
186              {Mixed, 4}, {Empty, 2}, {Full, 1}, {Mixed, 4}, {Full, 1},
187              {Mixed, 2}, {Full, 10}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
188              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 1},
189              {Mixed, 1}, {Full, 2}, {Mixed, 2}, {Full, 18}, {Mixed, 2},
190              {Full, 2}, {Mixed, 5}, {Full, 1}, {Mixed, 2}, {Empty, 2},
191              {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 1},
192              {Mixed, 5}, {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 1},
193              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 2},
194              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Full, 1}, {Mixed, 1},
195              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 3},
196              {Mixed, 1}, {Full, 6}, {Empty, 1}, {Mixed, 1}, {Full, 8},
197              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 3},
198              {Empty, 3}, {Mixed, 2}, {Empty, 3}, {Mixed, 3}, {Full, 1},
199              {Mixed, 1}, {Empty, 24}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
200              {Empty, 56}, {Full, 1}, {Mixed, 2}, {Full, 4}, {Mixed, 1},
201              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 4}, {Full, 1},
202              {Empty, 1}, {Mixed, 1}, {Empty, 14}, {Mixed, 3}, {Full, 1},
203              {Mixed, 2}, {Full, 1}, {Mixed, 3}, {Full, 2}, {Mixed, 2},
204              {Empty, 1}, {Mixed, 1}, {Empty, 16}, {Full, 205}, {Mixed, 1},
205              {Empty, 2}, {Full, 654}, {Mixed, 1}, {Empty, 1}, {Full, 36},
206              {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Full, 8}, {Mixed, 2},
207              {Full, 1}, {Mixed, 1}, {Full, 3}, {Mixed, 3}, {Full, 2},
208              {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
209              {Full, 2}, {Mixed, 6}, {Full, 1}, {Mixed, 3}, {Full, 1},
210              {Mixed, 3}, {Full, 1}, {Mixed, 7}, {Full, 3}, {Mixed, 1},
211              {Full, 349}, {Mixed, 3}, {Empty, 264}, {Full, 11}, {Mixed, 1},
212              {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Full, 2},
213              {Mixed, 2}, {Full, 10}, {Mixed, 2}, {Full, 1}, {Mixed, 1},
214              {Full, 1}, {Mixed, 2}, {Empty, 3}, {Mixed, 1}, {Full, 3},
215              {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 2},
216              {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Full, 3}, {Mixed, 1},
217              {Empty, 2}, {Full, 1}, {Mixed, 1}, {Empty, 8}, {Mixed, 1},
218              {Full, 1}, {Mixed, 1}, {Empty, 1}, {Full, 1}, {Mixed, 4},
219              {Full, 1}, {Mixed, 1}, {Empty, 1}, {Full, 4}, {Mixed, 1},
220              {Empty, 3}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
221              {Empty, 4}, {Full, 9}, {Mixed, 3}, {Empty, 4}, {Mixed, 5},
222              {Empty, 2}, {Mixed, 3}, {Empty, 2}, {Full, 1}, {Mixed, 1},
223              {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 1},
224              {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Empty, 3}, {Full, 2},
225              {Mixed, 1}, {Empty, 1}, {Full, 1}, {Mixed, 1}, {Full, 1},
226              {Mixed, 1}, {Empty, 24}, {Full, 2}, {Mixed, 1}, {Empty, 1},
227              {Mixed, 4}, {Full, 1}, {Mixed, 3}, {Full, 2}, {Mixed, 1},
228              {Empty, 1}, {Mixed, 2}, {Empty, 2}, {Mixed, 2}, {Full, 1},
229              {Mixed, 5}, {Empty, 8}, {Full, 2}, {Mixed, 1}, {Empty, 5},
230              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Full, 1}, {Mixed, 2},
231              {Empty, 1}, {Full, 1}, {Mixed, 1}, {Empty, 2}, {Mixed, 2},
232              {Empty, 11}, {Full, 2}, {Mixed, 1}, {Empty, 14}, {Full, 1},
233              {Mixed, 1}, {Empty, 40}, {Full, 28}, {Mixed, 1}, {Empty, 3},
234              {Full, 3}, {Mixed, 1}, {Full, 6}, {Mixed, 1}, {Empty, 85},
235              {Full, 33}, {Mixed, 1}, {Empty, 126}, {Full, 18}, {Mixed, 1},
236              {Empty, 269}, {Full, 17}, {Mixed, 2}, {Empty, 3}, {Mixed, 2},
237              {Full, 1}, {Mixed, 4}, {Empty, 27}, {Full, 2}, {Mixed, 3},
238              {Empty, 515}, {Mixed, 1}, {Empty, 95}, {Full, 3}, {Mixed, 2},
239              {Empty, 187}, {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
240              {Full, 1}, {Mixed, 3}, {Full, 10}, {Mixed, 10}, {Empty, 129},
241              {Full, 6}, {Mixed, 1}, {Empty, 41}, {Mixed, 6}, {Empty, 19},
242              {Mixed, 4}, {Empty, 115}, {Full, 1334}, {Mixed, 1},
243              {Empty, 1}, {Full, 129}, {Mixed, 1}, {Full, 6}, {Mixed, 1},
244              {Full, 180}, {Mixed, 1}, {Empty, 330}, {Full, 16}, {Mixed, 1},
245              {Empty, 28719}},
246             {0x07fffffe, 0x07fffffe, 0x04200400, 0xff7fffff, 0xff7fffff,
247              0x0003ffc3, 0x0000501f, 0x00000020, 0xbcdf0000, 0xffffd740,
248              0xfffffffb, 0xffbfffff, 0xfffffc03, 0xfffeffff, 0x027fffff,
249              0xfffffffe, 0x000000ff, 0xbfff0000, 0xffff00b6, 0x000707ff,
250              0x07ff0000, 0xfeffffff, 0xffffc000, 0x1fefffff, 0x9c00e1fe,
251              0xffff0000, 0xffffe000, 0x0003ffff, 0xfffffc00, 0x043007ff,
252              0xfcffffff, 0x00001fff, 0x01ffffff, 0x001fffff, 0xffff03f8,
253              0xefffffff, 0xffe1dfff, 0xfffe000f, 0xfff99fef, 0xe3c5fdff,
254              0xb080599f, 0x0003000f, 0xfff987ee, 0xc36dfdff, 0x5e021987,
255              0x003f0000, 0xfffbbfee, 0xe3edfdff, 0x00011bbf, 0x0200000f,
256              0xfff99fee, 0xe3edfdff, 0xb0c0199f, 0x0002000f, 0xd63dc7ec,
257              0xc3ffc718, 0x00811dc7, 0xfffddfef, 0xe3fffdff, 0x07601ddf,
258              0x0000000f, 0xfffddfee, 0xe3effdff, 0x40601ddf, 0x0006000f,
259              0xfffddfee, 0xe7ffffff, 0x80805ddf, 0xfc00000f, 0xfc7fffec,
260              0x2ffbffff, 0xff5f807f, 0x000c0000, 0xfffffffe, 0x07ffffff,
261              0x0000207f, 0xfef02596, 0x3bffecae, 0xf000205f, 0x00000001,
262              0xfffffeff, 0xfffe1fff, 0xfeffff03, 0x1fffffff, 0xf97fffff,
263              0xffff0000, 0xffffc1e7, 0x3000407f, 0xffff20bf, 0xf7ffffff,
264              0x3d7f3dff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d, 0xff3dffff,
265              0x87ffffff, 0x0000ffff, 0x3f3fffff, 0xfffffffe, 0xffff9fff,
266              0x07fffffe, 0x01ffc7ff, 0x000fdfff, 0x000fffff, 0x000fffff,
267              0x000ddfff, 0xffcfffff, 0x108001ff, 0x00ffffff, 0xffff07ff,
268              0x003fffff, 0x7fffffff, 0x01ff0fff, 0xffff0000, 0x001f3fff,
269              0xffff0fff, 0x000003ff, 0x0fffffff, 0x7fffffff, 0x001ffffe,
270              0x00000080, 0xffefffff, 0x00000fef, 0xfc00f3ff, 0x0003ffbf,
271              0x003fffff, 0xfc00e000, 0x3fffffff, 0x006fde00, 0x001fff80,
272              0x3f3fffff, 0xaaff3f3f, 0x3fffffff, 0x5fdfffff, 0x0fcf1fdc,
273              0x1fdc1fff, 0x80020000, 0x1fff0000, 0x3e2ffc84, 0xf3ffbd50,
274              0x000043e0, 0x000001ff, 0xffc00000, 0x000003ff, 0xffff7fff,
275              0x7fffffff, 0x000c781f, 0xffff20bf, 0x000080ff, 0x007fffff,
276              0x7f7f7f7f, 0x7f7f7f7f, 0x00008000, 0x000000e0, 0x1f3e03fe,
277              0xfffffffe, 0xe07fffff, 0xfffffffe, 0xf7ffffff, 0xffffffe0,
278              0xfffe3fff, 0x00007fff, 0x07ffffff, 0xffff0000, 0x003fffff,
279              0x003fffff, 0x00001fff, 0xffff0000, 0x3fffffff, 0xffff1fff,
280              0x00000c00, 0x8ff07fff, 0x0000ffff, 0xff800000, 0xfffffffc,
281              0xfffff9ff, 0x00ff3fff, 0xff800000, 0xfffff7bb, 0x000000ff,
282              0x000fffff, 0x0000000f, 0x28fc0000, 0xfffffc00, 0xffff07ff,
283              0x0007ffff, 0x1fffffff, 0xfff7ffff, 0x00008000, 0x7c00ffdf,
284              0x007fffff, 0x00003fff, 0xc47fffff, 0x7fffffff, 0x38000005,
285              0x003cffff, 0x007e7e7e, 0xffff7f7f, 0xf7ffffff, 0xffff003f,
286              0x000007ff, 0xffff000f, 0xfffff87f, 0x0fffffff, 0xffff3fff,
287              0x03ffffff, 0xe0f8007f, 0x5f7ffdff, 0xffffffdb, 0x0003ffff,
288              0xfff80000, 0x3fffffff, 0xffff0000, 0xfffcffff, 0x000000ff,
289              0x0fff0000, 0xffdf0000, 0x1fffffff, 0x07fffffe, 0x07fffffe,
290              0xffffffc0, 0x7fffffff, 0x1cfcfcfc, 0xffffefff, 0xb7ffff7f,
291              0x3fff3fff, 0x07ffffff, 0x001fffff, 0x1fffffff, 0x0001ffff,
292              0xffff0000, 0xffff07ff, 0x07ffffff, 0x3fffffff, 0x003eff0f,
293              0x3fffffff, 0xffff00ff, 0x0000000f, 0x007fffff, 0x003fffff,
294              0x000000ff, 0xfffffd3f, 0x91bfffff, 0x003fffff, 0x007fffff,
295              0x7fffffff, 0x0037ffff, 0x003fffff, 0x03ffffff, 0xc0ffffff,
296              0xfeeff06f, 0x000fffff, 0x1fffffff, 0x1fffffff, 0xfffffeff,
297              0x0000001f, 0x003fffff, 0x003fffff, 0x0007ffff, 0x0003ffff,
298              0x000001ff, 0x0007ffff, 0x0007ffff, 0x0000003f, 0xfffffffc,
299              0x01ffffff, 0xffff0000, 0x000001ff, 0x0007ffff, 0xffff0000,
300              0x0047ffff, 0x1400001e, 0xfffbffff, 0x009fffff, 0xbfffbd7f,
301              0xffff01ff, 0x000001ff, 0xfff99fef, 0xe3edfdff, 0xe081199f,
302              0x0000000f, 0x000000b3, 0x7f3fffff, 0x3f000000, 0x7fffffff,
303              0x00000011, 0x003fffff, 0xe3ffffff, 0x000007ff, 0x80000000,
304              0x01ffffff, 0x03ffffff, 0x00007fff, 0x0000000f, 0x00007fff,
305              0x0000007f, 0x01ffffff, 0x7fffffff, 0xffff0000, 0x00003fff,
306              0x007fffff, 0x0000000f, 0xe0fffff8, 0x0000ffff, 0xffff001f,
307              0x7fffffff, 0xfff80000, 0x00000003, 0x1fff07ff, 0x43ff01ff,
308              0xffdfffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xdfdfe7bf,
309              0x7bffffff, 0xfffdfc5f, 0xffffff3f, 0xf7fffffd, 0xf7ffffff,
310              0xffdfffff, 0xffdfffff, 0xffff7fff, 0xffff7fff, 0xfffffdff,
311              0xfffffdff, 0x00000ff7, 0x0000001f, 0xffffffef, 0x0af7fe96,
312              0xaa96ea84, 0x5ef7f796, 0x0ffffbff, 0x0ffffbee, 0xffff0000,
313              0xffff03ff, 0xffff03ff, 0x000003ff, 0x007fffff, 0x001fffff,
314              0x3fffffff, 0x00000003, 0x3fffffff}};
315        static BinaryPropertyObject property_object{Alpha, codepoint_set};
316    }
317    namespace CI_ns {
318        /** Code Point Ranges for CI
319        [39, 39], [46, 46], [58, 58], [94, 94], [96, 96], [168, 168],
320        [173, 173], [175, 175], [180, 180], [183, 184], [688, 879],
321        [884, 885], [890, 890], [900, 901], [903, 903], [1155, 1161],
322        [1369, 1369], [1425, 1469], [1471, 1471], [1473, 1474],
323        [1476, 1477], [1479, 1479], [1524, 1524], [1536, 1541],
324        [1552, 1562], [1564, 1564], [1600, 1600], [1611, 1631],
325        [1648, 1648], [1750, 1757], [1759, 1768], [1770, 1773],
326        [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968],
327        [2027, 2037], [2042, 2042], [2070, 2093], [2137, 2139],
328        [2275, 2306], [2362, 2362], [2364, 2364], [2369, 2376],
329        [2381, 2381], [2385, 2391], [2402, 2403], [2417, 2417],
330        [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509],
331        [2530, 2531], [2561, 2562], [2620, 2620], [2625, 2626],
332        [2631, 2632], [2635, 2637], [2641, 2641], [2672, 2673],
333        [2677, 2677], [2689, 2690], [2748, 2748], [2753, 2757],
334        [2759, 2760], [2765, 2765], [2786, 2787], [2817, 2817],
335        [2876, 2876], [2879, 2879], [2881, 2884], [2893, 2893],
336        [2902, 2902], [2914, 2915], [2946, 2946], [3008, 3008],
337        [3021, 3021], [3072, 3072], [3134, 3136], [3142, 3144],
338        [3146, 3149], [3157, 3158], [3170, 3171], [3201, 3201],
339        [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277],
340        [3298, 3299], [3329, 3329], [3393, 3396], [3405, 3405],
341        [3426, 3427], [3530, 3530], [3538, 3540], [3542, 3542],
342        [3633, 3633], [3636, 3642], [3654, 3662], [3761, 3761],
343        [3764, 3769], [3771, 3772], [3782, 3782], [3784, 3789],
344        [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897],
345        [3953, 3966], [3968, 3972], [3974, 3975], [3981, 3991],
346        [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4151],
347        [4153, 4154], [4157, 4158], [4184, 4185], [4190, 4192],
348        [4209, 4212], [4226, 4226], [4229, 4230], [4237, 4237],
349        [4253, 4253], [4348, 4348], [4957, 4959], [5906, 5908],
350        [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069],
351        [6071, 6077], [6086, 6086], [6089, 6099], [6103, 6103],
352        [6109, 6109], [6155, 6158], [6211, 6211], [6313, 6313],
353        [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459],
354        [6679, 6680], [6683, 6683], [6742, 6742], [6744, 6750],
355        [6752, 6752], [6754, 6754], [6757, 6764], [6771, 6780],
356        [6783, 6783], [6823, 6823], [6832, 6846], [6912, 6915],
357        [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978],
358        [7019, 7027], [7040, 7041], [7074, 7077], [7080, 7081],
359        [7083, 7085], [7142, 7142], [7144, 7145], [7149, 7149],
360        [7151, 7153], [7212, 7219], [7222, 7223], [7288, 7293],
361        [7376, 7378], [7380, 7392], [7394, 7400], [7405, 7405],
362        [7412, 7412], [7416, 7417], [7468, 7530], [7544, 7544],
363        [7579, 7669], [7676, 7679], [8125, 8125], [8127, 8129],
364        [8141, 8143], [8157, 8159], [8173, 8175], [8189, 8190],
365        [8203, 8207], [8216, 8217], [8228, 8228], [8231, 8231],
366        [8234, 8238], [8288, 8292], [8294, 8303], [8305, 8305],
367        [8319, 8319], [8336, 8348], [8400, 8432], [11388, 11389],
368        [11503, 11505], [11631, 11631], [11647, 11647], [11744, 11775],
369        [11823, 11823], [12293, 12293], [12330, 12333], [12337, 12341],
370        [12347, 12347], [12441, 12446], [12540, 12542], [40981, 40981],
371        [42232, 42237], [42508, 42508], [42607, 42610], [42612, 42621],
372        [42623, 42623], [42652, 42655], [42736, 42737], [42752, 42785],
373        [42864, 42864], [42888, 42890], [43000, 43001], [43010, 43010],
374        [43014, 43014], [43019, 43019], [43045, 43046], [43204, 43204],
375        [43232, 43249], [43302, 43309], [43335, 43345], [43392, 43394],
376        [43443, 43443], [43446, 43449], [43452, 43452], [43471, 43471],
377        [43493, 43494], [43561, 43566], [43569, 43570], [43573, 43574],
378        [43587, 43587], [43596, 43596], [43632, 43632], [43644, 43644],
379        [43696, 43696], [43698, 43700], [43703, 43704], [43710, 43711],
380        [43713, 43713], [43741, 43741], [43756, 43757], [43763, 43764],
381        [43766, 43766], [43867, 43871], [44005, 44005], [44008, 44008],
382        [44013, 44013], [64286, 64286], [64434, 64449], [65024, 65039],
383        [65043, 65043], [65056, 65071], [65106, 65106], [65109, 65109],
384        [65279, 65279], [65287, 65287], [65294, 65294], [65306, 65306],
385        [65342, 65342], [65344, 65344], [65392, 65392], [65438, 65439],
386        [65507, 65507], [65529, 65531], [66045, 66045], [66272, 66272],
387        [66422, 66426], [68097, 68099], [68101, 68102], [68108, 68111],
388        [68152, 68154], [68159, 68159], [68325, 68326], [69633, 69633],
389        [69688, 69702], [69759, 69761], [69811, 69814], [69817, 69818],
390        [69821, 69821], [69888, 69890], [69927, 69931], [69933, 69940],
391        [70003, 70003], [70016, 70017], [70070, 70078], [70090, 70092],
392        [70191, 70193], [70196, 70196], [70198, 70199], [70367, 70367],
393        [70371, 70378], [70400, 70401], [70460, 70460], [70464, 70464],
394        [70502, 70508], [70512, 70516], [70835, 70840], [70842, 70842],
395        [70847, 70848], [70850, 70851], [71090, 71093], [71100, 71101],
396        [71103, 71104], [71132, 71133], [71219, 71226], [71229, 71229],
397        [71231, 71232], [71339, 71339], [71341, 71341], [71344, 71349],
398        [71351, 71351], [71453, 71455], [71458, 71461], [71463, 71467],
399        [92912, 92916], [92976, 92982], [92992, 92995], [94095, 94111],
400        [113821, 113822], [113824, 113827], [119143, 119145],
401        [119155, 119170], [119173, 119179], [119210, 119213],
402        [119362, 119364], [121344, 121398], [121403, 121452],
403        [121461, 121461], [121476, 121476], [121499, 121503],
404        [121505, 121519], [125136, 125142], [127995, 127999],
405        [917505, 917505], [917536, 917631], [917760, 917999]**/
406        const UnicodeSet codepoint_set
407            {{{Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 1}, {Empty, 15},
408              {Mixed, 1}, {Full, 5}, {Mixed, 2}, {Empty, 7}, {Mixed, 1},
409              {Empty, 5}, {Mixed, 1}, {Empty, 1}, {Mixed, 5}, {Empty, 1},
410              {Mixed, 2}, {Empty, 2}, {Mixed, 5}, {Empty, 2}, {Mixed, 1},
411              {Empty, 1}, {Mixed, 4}, {Empty, 4}, {Mixed, 22}, {Empty, 1},
412              {Mixed, 1}, {Empty, 1}, {Mixed, 9}, {Empty, 1}, {Mixed, 2},
413              {Empty, 2}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 2},
414              {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 4},
415              {Empty, 2}, {Mixed, 4}, {Empty, 2}, {Mixed, 1}, {Empty, 18},
416              {Mixed, 1}, {Empty, 29}, {Mixed, 4}, {Empty, 1}, {Mixed, 2},
417              {Empty, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 2},
418              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 6}, {Mixed, 1},
419              {Empty, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 2},
420              {Mixed, 6}, {Empty, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
421              {Empty, 1}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 1},
422              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 2}, {Mixed, 1},
423              {Empty, 13}, {Mixed, 5}, {Empty, 1}, {Mixed, 2}, {Empty, 1},
424              {Mixed, 2}, {Empty, 91}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
425              {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Full, 1}, {Empty, 1},
426              {Mixed, 1}, {Empty, 14}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
427              {Empty, 2}, {Mixed, 1}, {Empty, 888}, {Mixed, 1}, {Empty, 38},
428              {Mixed, 1}, {Empty, 8}, {Mixed, 1}, {Empty, 2}, {Mixed, 2},
429              {Empty, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 1},
430              {Mixed, 2}, {Empty, 2}, {Mixed, 3}, {Empty, 4}, {Mixed, 2},
431              {Empty, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 4}, {Empty, 1},
432              {Mixed, 3}, {Empty, 1}, {Mixed, 3}, {Empty, 2}, {Mixed, 1},
433              {Empty, 4}, {Mixed, 1}, {Empty, 632}, {Mixed, 1}, {Empty, 4},
434              {Mixed, 2}, {Empty, 17}, {Mixed, 3}, {Empty, 4}, {Mixed, 6},
435              {Empty, 2}, {Mixed, 1}, {Empty, 15}, {Mixed, 1}, {Empty, 7},
436              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 52}, {Mixed, 2},
437              {Empty, 5}, {Mixed, 1}, {Empty, 40}, {Mixed, 6}, {Empty, 2},
438              {Mixed, 2}, {Empty, 1}, {Mixed, 4}, {Empty, 2}, {Mixed, 1},
439              {Empty, 4}, {Mixed, 6}, {Empty, 9}, {Mixed, 2}, {Empty, 6},
440              {Mixed, 2}, {Empty, 2}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
441              {Empty, 2}, {Mixed, 2}, {Empty, 669}, {Mixed, 1}, {Empty, 1},
442              {Mixed, 2}, {Empty, 33}, {Mixed, 1}, {Empty, 615}, {Mixed, 2},
443              {Empty, 165}, {Mixed, 3}, {Empty, 4}, {Mixed, 1}, {Empty, 61},
444              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 112},
445              {Mixed, 1}, {Empty, 88}, {Mixed, 1}, {Empty, 24672},
446              {Mixed, 1}, {Full, 3}, {Empty, 4}, {Full, 7}, {Mixed, 1},
447              {Empty, 6128}},
448             {0x04004080, 0x40000000, 0x00000001, 0x0190a100, 0xffff0000,
449              0x0430ffff, 0x000000b0, 0x000003f8, 0x02000000, 0xfffe0000,
450              0xbfffffff, 0x000000b6, 0x00100000, 0x17ff003f, 0xfffff801,
451              0x00010000, 0xbfc00000, 0x00003dff, 0x00028000, 0xffff0000,
452              0x000007ff, 0x0001ffc0, 0x043ff800, 0xffc00000, 0x00003fff,
453              0x0e000000, 0xfffffff8, 0x00000007, 0x14000000, 0x00fe21fe,
454              0x0002000c, 0x00000002, 0x10000000, 0x0000201e, 0x0000000c,
455              0x00000006, 0x10000000, 0x00023986, 0x00230000, 0x00000006,
456              0x10000000, 0x000021be, 0x0000000c, 0x00000002, 0x90000000,
457              0x0040201e, 0x0000000c, 0x00000004, 0x00002001, 0x00000001,
458              0xc0000000, 0x00603dc1, 0x0000000c, 0x00000002, 0x90000000,
459              0x00003040, 0x0000000c, 0x00000002, 0x0000201e, 0x0000000c,
460              0x005c0400, 0x07f20000, 0x00007fc0, 0x1bf20000, 0x00003f40,
461              0x03000000, 0x02a00000, 0x7ffe0000, 0xfeffe0df, 0x1fffffff,
462              0x00000040, 0x66fde000, 0xc3000000, 0x001e0001, 0x20002064,
463              0x10000000, 0xe0000000, 0x001c0000, 0x001c0000, 0x000c0000,
464              0x000c0000, 0x3fb00000, 0x208ffe40, 0x00007800, 0x00000008,
465              0x00000200, 0x0e040187, 0x09800000, 0x7f400000, 0x9ff81fe5,
466              0x7fff0080, 0x0000000f, 0x17d00000, 0x00000004, 0x000ff800,
467              0x00000003, 0x00003b3c, 0x0003a340, 0x00cff000, 0x3f000000,
468              0xfff70000, 0x031021fd, 0xfffff000, 0x010007ff, 0xf8000000,
469              0xf03fffff, 0xa0000000, 0xe000e003, 0x6000e000, 0x0300f800,
470              0x00007c90, 0x8002ffdf, 0x1fff0000, 0xffff0000, 0x0001ffff,
471              0x30000000, 0x00038000, 0x80008000, 0x00008000, 0x00000020,
472              0x083e3c00, 0x7e000000, 0x70000000, 0x00200000, 0x3f000000,
473              0x00001000, 0xbff78000, 0xf0000000, 0x00030000, 0x00000003,
474              0x00010000, 0x00000700, 0x03000000, 0x00000844, 0x00000060,
475              0x00000010, 0x0003ffff, 0x00003fc0, 0x0003ff80, 0x00000007,
476              0x13c80000, 0x00008000, 0x00000060, 0x00667e00, 0x00001008,
477              0x10010000, 0xc19d0000, 0x20000002, 0x00583000, 0xf8000000,
478              0x00002120, 0x40000000, 0xfffc0000, 0x00000003, 0x0008ffff,
479              0x0000ffff, 0x00240000, 0x80000000, 0x04004080, 0x40000000,
480              0x00000001, 0x00010000, 0xc0000000, 0x0e000008, 0x20000000,
481              0x00000001, 0x07c00000, 0x0000f06e, 0x87000000, 0x00000060,
482              0x00000002, 0xff000000, 0x0000007f, 0x80000000, 0x00000003,
483              0x26780000, 0x00000007, 0x001fef80, 0x00080000, 0x00000003,
484              0x7fc00000, 0x00001c00, 0x00d38000, 0x80000000, 0x000007f8,
485              0x00000003, 0x10000000, 0x00000001, 0x001f1fc0, 0x85f80000,
486              0x0000000d, 0xb03c0000, 0x30000001, 0xa7f80000, 0x00000001,
487              0x00bf2800, 0xe0000000, 0x00000fbc, 0x001f0000, 0x007f0000,
488              0x0000000f, 0xffff8000, 0x60000000, 0x0000000f, 0xfff80380,
489              0x00000fe7, 0x00003c00, 0x0000001c, 0xf87fffff, 0x00201fff,
490              0xf8000010, 0x0000fffe, 0x007f0000, 0xf8000000, 0x00000002,
491              0x0000ffff}};
492        static BinaryPropertyObject property_object{CI, codepoint_set};
493    }
494    namespace CWCF_ns {
495        /** Code Point Ranges for CWCF
496        [65, 90], [181, 181], [192, 214], [216, 223], [256, 256],
497        [258, 258], [260, 260], [262, 262], [264, 264], [266, 266],
498        [268, 268], [270, 270], [272, 272], [274, 274], [276, 276],
499        [278, 278], [280, 280], [282, 282], [284, 284], [286, 286],
500        [288, 288], [290, 290], [292, 292], [294, 294], [296, 296],
501        [298, 298], [300, 300], [302, 302], [304, 304], [306, 306],
502        [308, 308], [310, 310], [313, 313], [315, 315], [317, 317],
503        [319, 319], [321, 321], [323, 323], [325, 325], [327, 327],
504        [329, 330], [332, 332], [334, 334], [336, 336], [338, 338],
505        [340, 340], [342, 342], [344, 344], [346, 346], [348, 348],
506        [350, 350], [352, 352], [354, 354], [356, 356], [358, 358],
507        [360, 360], [362, 362], [364, 364], [366, 366], [368, 368],
508        [370, 370], [372, 372], [374, 374], [376, 377], [379, 379],
509        [381, 381], [383, 383], [385, 386], [388, 388], [390, 391],
510        [393, 395], [398, 401], [403, 404], [406, 408], [412, 413],
511        [415, 416], [418, 418], [420, 420], [422, 423], [425, 425],
512        [428, 428], [430, 431], [433, 435], [437, 437], [439, 440],
513        [444, 444], [452, 453], [455, 456], [458, 459], [461, 461],
514        [463, 463], [465, 465], [467, 467], [469, 469], [471, 471],
515        [473, 473], [475, 475], [478, 478], [480, 480], [482, 482],
516        [484, 484], [486, 486], [488, 488], [490, 490], [492, 492],
517        [494, 494], [497, 498], [500, 500], [502, 504], [506, 506],
518        [508, 508], [510, 510], [512, 512], [514, 514], [516, 516],
519        [518, 518], [520, 520], [522, 522], [524, 524], [526, 526],
520        [528, 528], [530, 530], [532, 532], [534, 534], [536, 536],
521        [538, 538], [540, 540], [542, 542], [544, 544], [546, 546],
522        [548, 548], [550, 550], [552, 552], [554, 554], [556, 556],
523        [558, 558], [560, 560], [562, 562], [570, 571], [573, 574],
524        [577, 577], [579, 582], [584, 584], [586, 586], [588, 588],
525        [590, 590], [837, 837], [880, 880], [882, 882], [886, 886],
526        [895, 895], [902, 902], [904, 906], [908, 908], [910, 911],
527        [913, 929], [931, 939], [962, 962], [975, 977], [981, 982],
528        [984, 984], [986, 986], [988, 988], [990, 990], [992, 992],
529        [994, 994], [996, 996], [998, 998], [1000, 1000], [1002, 1002],
530        [1004, 1004], [1006, 1006], [1008, 1009], [1012, 1013],
531        [1015, 1015], [1017, 1018], [1021, 1071], [1120, 1120],
532        [1122, 1122], [1124, 1124], [1126, 1126], [1128, 1128],
533        [1130, 1130], [1132, 1132], [1134, 1134], [1136, 1136],
534        [1138, 1138], [1140, 1140], [1142, 1142], [1144, 1144],
535        [1146, 1146], [1148, 1148], [1150, 1150], [1152, 1152],
536        [1162, 1162], [1164, 1164], [1166, 1166], [1168, 1168],
537        [1170, 1170], [1172, 1172], [1174, 1174], [1176, 1176],
538        [1178, 1178], [1180, 1180], [1182, 1182], [1184, 1184],
539        [1186, 1186], [1188, 1188], [1190, 1190], [1192, 1192],
540        [1194, 1194], [1196, 1196], [1198, 1198], [1200, 1200],
541        [1202, 1202], [1204, 1204], [1206, 1206], [1208, 1208],
542        [1210, 1210], [1212, 1212], [1214, 1214], [1216, 1217],
543        [1219, 1219], [1221, 1221], [1223, 1223], [1225, 1225],
544        [1227, 1227], [1229, 1229], [1232, 1232], [1234, 1234],
545        [1236, 1236], [1238, 1238], [1240, 1240], [1242, 1242],
546        [1244, 1244], [1246, 1246], [1248, 1248], [1250, 1250],
547        [1252, 1252], [1254, 1254], [1256, 1256], [1258, 1258],
548        [1260, 1260], [1262, 1262], [1264, 1264], [1266, 1266],
549        [1268, 1268], [1270, 1270], [1272, 1272], [1274, 1274],
550        [1276, 1276], [1278, 1278], [1280, 1280], [1282, 1282],
551        [1284, 1284], [1286, 1286], [1288, 1288], [1290, 1290],
552        [1292, 1292], [1294, 1294], [1296, 1296], [1298, 1298],
553        [1300, 1300], [1302, 1302], [1304, 1304], [1306, 1306],
554        [1308, 1308], [1310, 1310], [1312, 1312], [1314, 1314],
555        [1316, 1316], [1318, 1318], [1320, 1320], [1322, 1322],
556        [1324, 1324], [1326, 1326], [1329, 1366], [1415, 1415],
557        [4256, 4293], [4295, 4295], [4301, 4301], [5112, 5117],
558        [7680, 7680], [7682, 7682], [7684, 7684], [7686, 7686],
559        [7688, 7688], [7690, 7690], [7692, 7692], [7694, 7694],
560        [7696, 7696], [7698, 7698], [7700, 7700], [7702, 7702],
561        [7704, 7704], [7706, 7706], [7708, 7708], [7710, 7710],
562        [7712, 7712], [7714, 7714], [7716, 7716], [7718, 7718],
563        [7720, 7720], [7722, 7722], [7724, 7724], [7726, 7726],
564        [7728, 7728], [7730, 7730], [7732, 7732], [7734, 7734],
565        [7736, 7736], [7738, 7738], [7740, 7740], [7742, 7742],
566        [7744, 7744], [7746, 7746], [7748, 7748], [7750, 7750],
567        [7752, 7752], [7754, 7754], [7756, 7756], [7758, 7758],
568        [7760, 7760], [7762, 7762], [7764, 7764], [7766, 7766],
569        [7768, 7768], [7770, 7770], [7772, 7772], [7774, 7774],
570        [7776, 7776], [7778, 7778], [7780, 7780], [7782, 7782],
571        [7784, 7784], [7786, 7786], [7788, 7788], [7790, 7790],
572        [7792, 7792], [7794, 7794], [7796, 7796], [7798, 7798],
573        [7800, 7800], [7802, 7802], [7804, 7804], [7806, 7806],
574        [7808, 7808], [7810, 7810], [7812, 7812], [7814, 7814],
575        [7816, 7816], [7818, 7818], [7820, 7820], [7822, 7822],
576        [7824, 7824], [7826, 7826], [7828, 7828], [7834, 7835],
577        [7838, 7838], [7840, 7840], [7842, 7842], [7844, 7844],
578        [7846, 7846], [7848, 7848], [7850, 7850], [7852, 7852],
579        [7854, 7854], [7856, 7856], [7858, 7858], [7860, 7860],
580        [7862, 7862], [7864, 7864], [7866, 7866], [7868, 7868],
581        [7870, 7870], [7872, 7872], [7874, 7874], [7876, 7876],
582        [7878, 7878], [7880, 7880], [7882, 7882], [7884, 7884],
583        [7886, 7886], [7888, 7888], [7890, 7890], [7892, 7892],
584        [7894, 7894], [7896, 7896], [7898, 7898], [7900, 7900],
585        [7902, 7902], [7904, 7904], [7906, 7906], [7908, 7908],
586        [7910, 7910], [7912, 7912], [7914, 7914], [7916, 7916],
587        [7918, 7918], [7920, 7920], [7922, 7922], [7924, 7924],
588        [7926, 7926], [7928, 7928], [7930, 7930], [7932, 7932],
589        [7934, 7934], [7944, 7951], [7960, 7965], [7976, 7983],
590        [7992, 7999], [8008, 8013], [8025, 8025], [8027, 8027],
591        [8029, 8029], [8031, 8031], [8040, 8047], [8064, 8111],
592        [8114, 8116], [8119, 8124], [8130, 8132], [8135, 8140],
593        [8152, 8155], [8168, 8172], [8178, 8180], [8183, 8188],
594        [8486, 8486], [8490, 8491], [8498, 8498], [8544, 8559],
595        [8579, 8579], [9398, 9423], [11264, 11310], [11360, 11360],
596        [11362, 11364], [11367, 11367], [11369, 11369], [11371, 11371],
597        [11373, 11376], [11378, 11378], [11381, 11381], [11390, 11392],
598        [11394, 11394], [11396, 11396], [11398, 11398], [11400, 11400],
599        [11402, 11402], [11404, 11404], [11406, 11406], [11408, 11408],
600        [11410, 11410], [11412, 11412], [11414, 11414], [11416, 11416],
601        [11418, 11418], [11420, 11420], [11422, 11422], [11424, 11424],
602        [11426, 11426], [11428, 11428], [11430, 11430], [11432, 11432],
603        [11434, 11434], [11436, 11436], [11438, 11438], [11440, 11440],
604        [11442, 11442], [11444, 11444], [11446, 11446], [11448, 11448],
605        [11450, 11450], [11452, 11452], [11454, 11454], [11456, 11456],
606        [11458, 11458], [11460, 11460], [11462, 11462], [11464, 11464],
607        [11466, 11466], [11468, 11468], [11470, 11470], [11472, 11472],
608        [11474, 11474], [11476, 11476], [11478, 11478], [11480, 11480],
609        [11482, 11482], [11484, 11484], [11486, 11486], [11488, 11488],
610        [11490, 11490], [11499, 11499], [11501, 11501], [11506, 11506],
611        [42560, 42560], [42562, 42562], [42564, 42564], [42566, 42566],
612        [42568, 42568], [42570, 42570], [42572, 42572], [42574, 42574],
613        [42576, 42576], [42578, 42578], [42580, 42580], [42582, 42582],
614        [42584, 42584], [42586, 42586], [42588, 42588], [42590, 42590],
615        [42592, 42592], [42594, 42594], [42596, 42596], [42598, 42598],
616        [42600, 42600], [42602, 42602], [42604, 42604], [42624, 42624],
617        [42626, 42626], [42628, 42628], [42630, 42630], [42632, 42632],
618        [42634, 42634], [42636, 42636], [42638, 42638], [42640, 42640],
619        [42642, 42642], [42644, 42644], [42646, 42646], [42648, 42648],
620        [42650, 42650], [42786, 42786], [42788, 42788], [42790, 42790],
621        [42792, 42792], [42794, 42794], [42796, 42796], [42798, 42798],
622        [42802, 42802], [42804, 42804], [42806, 42806], [42808, 42808],
623        [42810, 42810], [42812, 42812], [42814, 42814], [42816, 42816],
624        [42818, 42818], [42820, 42820], [42822, 42822], [42824, 42824],
625        [42826, 42826], [42828, 42828], [42830, 42830], [42832, 42832],
626        [42834, 42834], [42836, 42836], [42838, 42838], [42840, 42840],
627        [42842, 42842], [42844, 42844], [42846, 42846], [42848, 42848],
628        [42850, 42850], [42852, 42852], [42854, 42854], [42856, 42856],
629        [42858, 42858], [42860, 42860], [42862, 42862], [42873, 42873],
630        [42875, 42875], [42877, 42878], [42880, 42880], [42882, 42882],
631        [42884, 42884], [42886, 42886], [42891, 42891], [42893, 42893],
632        [42896, 42896], [42898, 42898], [42902, 42902], [42904, 42904],
633        [42906, 42906], [42908, 42908], [42910, 42910], [42912, 42912],
634        [42914, 42914], [42916, 42916], [42918, 42918], [42920, 42920],
635        [42922, 42925], [42928, 42932], [42934, 42934], [43888, 43967],
636        [64256, 64262], [64275, 64279], [65313, 65338], [66560, 66599],
637        [68736, 68786], [71840, 71871]**/
638        const UnicodeSet codepoint_set
639            {{{Empty, 2}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 1},
640              {Mixed, 11}, {Empty, 7}, {Mixed, 6}, {Full, 1}, {Mixed, 1},
641              {Empty, 1}, {Mixed, 8}, {Empty, 1}, {Mixed, 1}, {Empty, 88},
642              {Full, 1}, {Mixed, 1}, {Empty, 24}, {Mixed, 1}, {Empty, 80},
643              {Mixed, 12}, {Full, 1}, {Mixed, 3}, {Empty, 9}, {Mixed, 1},
644              {Empty, 1}, {Mixed, 2}, {Empty, 24}, {Mixed, 2}, {Empty, 57},
645              {Full, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 5}, {Empty, 970},
646              {Mixed, 3}, {Empty, 4}, {Mixed, 5}, {Empty, 29}, {Mixed, 1},
647              {Full, 2}, {Empty, 634}, {Mixed, 1}, {Empty, 32}, {Mixed, 1},
648              {Empty, 38}, {Full, 1}, {Mixed, 1}, {Empty, 66}, {Full, 1},
649              {Mixed, 1}, {Empty, 95}, {Full, 1}, {Empty, 32570}},
650             {0x07fffffe, 0x00200000, 0xff7fffff, 0x55555555, 0xaa555555,
651              0x555556aa, 0xab555555, 0xb1dbced6, 0x11aed2d5, 0x4aaaadb0,
652              0x55d65555, 0x55555555, 0x6c055555, 0x0000557a, 0x00000020,
653              0x80450000, 0xfffed740, 0x00000ffb, 0x55638004, 0xe6b35555,
654              0x0000ffff, 0x55555555, 0x55555401, 0x55555555, 0x55552aab,
655              0x55555555, 0x55555555, 0xfffe5555, 0x007fffff, 0x00000080,
656              0x000020bf, 0x3f000000, 0x55555555, 0x55555555, 0x55555555,
657              0x55555555, 0x4c155555, 0x55555555, 0x55555555, 0x55555555,
658              0x3f00ff00, 0xff00ff00, 0xaa003f00, 0x0000ff00, 0x1f9cffff,
659              0x0f001f9c, 0x1f9c1f00, 0x00040c40, 0x0000ffff, 0x00000008,
660              0xffc00000, 0x0000ffff, 0x00007fff, 0xc025ea9d, 0x55555555,
661              0x55555555, 0x55555555, 0x00042805, 0x55555555, 0x00001555,
662              0x05555555, 0x55545554, 0x55555555, 0x6a005555, 0x55452855,
663              0x005f3d55, 0xffff0000, 0x00f8007f, 0x07fffffe, 0x000000ff,
664              0x0007ffff}};
665        static BinaryPropertyObject property_object{CWCF, codepoint_set};
666    }
667    namespace CWCM_ns {
668        /** Code Point Ranges for CWCM
669        [65, 90], [97, 122], [181, 181], [192, 214], [216, 246], [248, 311],
670        [313, 396], [398, 410], [412, 425], [428, 441], [444, 445],
671        [447, 447], [452, 544], [546, 563], [570, 596], [598, 599],
672        [601, 601], [603, 604], [608, 609], [611, 611], [613, 614],
673        [616, 617], [619, 620], [623, 623], [625, 626], [629, 629],
674        [637, 637], [640, 640], [643, 643], [647, 652], [658, 658],
675        [669, 670], [837, 837], [880, 883], [886, 887], [891, 893],
676        [895, 895], [902, 902], [904, 906], [908, 908], [910, 929],
677        [931, 977], [981, 1013], [1015, 1019], [1021, 1153], [1162, 1327],
678        [1329, 1366], [1377, 1415], [4256, 4293], [4295, 4295],
679        [4301, 4301], [5024, 5109], [5112, 5117], [7545, 7545],
680        [7549, 7549], [7680, 7835], [7838, 7838], [7840, 7957],
681        [7960, 7965], [7968, 8005], [8008, 8013], [8016, 8023],
682        [8025, 8025], [8027, 8027], [8029, 8029], [8031, 8061],
683        [8064, 8116], [8118, 8124], [8126, 8126], [8130, 8132],
684        [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172],
685        [8178, 8180], [8182, 8188], [8486, 8486], [8490, 8491],
686        [8498, 8498], [8526, 8526], [8544, 8575], [8579, 8580],
687        [9398, 9449], [11264, 11310], [11312, 11358], [11360, 11376],
688        [11378, 11379], [11381, 11382], [11390, 11491], [11499, 11502],
689        [11506, 11507], [11520, 11557], [11559, 11559], [11565, 11565],
690        [42560, 42605], [42624, 42651], [42786, 42799], [42802, 42863],
691        [42873, 42887], [42891, 42893], [42896, 42899], [42902, 42925],
692        [42928, 42935], [43859, 43859], [43888, 43967], [64256, 64262],
693        [64275, 64279], [65313, 65338], [65345, 65370], [66560, 66639],
694        [68736, 68786], [68800, 68850], [71840, 71903]**/
695        const UnicodeSet codepoint_set
696            {{{Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Full, 1},
697              {Mixed, 1}, {Full, 2}, {Mixed, 3}, {Full, 2}, {Mixed, 4},
698              {Empty, 5}, {Mixed, 6}, {Full, 4}, {Mixed, 1}, {Full, 4},
699              {Mixed, 4}, {Empty, 88}, {Full, 1}, {Mixed, 1}, {Empty, 22},
700              {Full, 2}, {Mixed, 1}, {Empty, 75}, {Mixed, 1}, {Empty, 4},
701              {Full, 4}, {Mixed, 1}, {Full, 3}, {Mixed, 1}, {Full, 1},
702              {Mixed, 2}, {Full, 1}, {Mixed, 3}, {Empty, 9}, {Mixed, 2},
703              {Full, 1}, {Mixed, 1}, {Empty, 24}, {Mixed, 1}, {Full, 1},
704              {Mixed, 1}, {Empty, 56}, {Full, 1}, {Mixed, 3}, {Full, 3},
705              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 968}, {Full, 1},
706              {Mixed, 2}, {Empty, 4}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
707              {Empty, 28}, {Mixed, 2}, {Full, 2}, {Empty, 634}, {Mixed, 1},
708              {Empty, 32}, {Mixed, 2}, {Empty, 37}, {Full, 2}, {Mixed, 1},
709              {Empty, 65}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
710              {Empty, 93}, {Full, 2}, {Empty, 32569}},
711             {0x07fffffe, 0x07fffffe, 0x00200000, 0xff7fffff, 0xff7fffff,
712              0xfeffffff, 0xf7ffdfff, 0xb3fff3ff, 0xfffffff0, 0xfc0ffffd,
713              0x1adfffff, 0x20269b6b, 0x60041f89, 0x00000020, 0xb8cf0000,
714              0xffffd740, 0xfffffffb, 0xffe3ffff, 0xefbfffff, 0xfffffc03,
715              0xfffeffff, 0x007fffff, 0xfffffffe, 0x000000ff, 0x000020bf,
716              0x3f3fffff, 0x22000000, 0x4fffffff, 0x3f3fffff, 0xaaff3f3f,
717              0x3fffffff, 0x5fdfffff, 0x0fcf1fdc, 0x1fdc1fff, 0x00040c40,
718              0x00004000, 0x00000018, 0xffc00000, 0x000003ff, 0xffff7fff,
719              0x7fffffff, 0xc06dffff, 0x000c780f, 0x000020bf, 0x00003fff,
720              0x0fffffff, 0xfffcfffc, 0xfe00ffff, 0xffcf38ff, 0x00ff3fff,
721              0x00080000, 0xffff0000, 0x00f8007f, 0x07fffffe, 0x07fffffe,
722              0x0000ffff, 0x0007ffff, 0x0007ffff}};
723        static BinaryPropertyObject property_object{CWCM, codepoint_set};
724    }
725    namespace CWL_ns {
726        /** Code Point Ranges for CWL
727        [65, 90], [192, 214], [216, 222], [256, 256], [258, 258],
728        [260, 260], [262, 262], [264, 264], [266, 266], [268, 268],
729        [270, 270], [272, 272], [274, 274], [276, 276], [278, 278],
730        [280, 280], [282, 282], [284, 284], [286, 286], [288, 288],
731        [290, 290], [292, 292], [294, 294], [296, 296], [298, 298],
732        [300, 300], [302, 302], [304, 304], [306, 306], [308, 308],
733        [310, 310], [313, 313], [315, 315], [317, 317], [319, 319],
734        [321, 321], [323, 323], [325, 325], [327, 327], [330, 330],
735        [332, 332], [334, 334], [336, 336], [338, 338], [340, 340],
736        [342, 342], [344, 344], [346, 346], [348, 348], [350, 350],
737        [352, 352], [354, 354], [356, 356], [358, 358], [360, 360],
738        [362, 362], [364, 364], [366, 366], [368, 368], [370, 370],
739        [372, 372], [374, 374], [376, 377], [379, 379], [381, 381],
740        [385, 386], [388, 388], [390, 391], [393, 395], [398, 401],
741        [403, 404], [406, 408], [412, 413], [415, 416], [418, 418],
742        [420, 420], [422, 423], [425, 425], [428, 428], [430, 431],
743        [433, 435], [437, 437], [439, 440], [444, 444], [452, 453],
744        [455, 456], [458, 459], [461, 461], [463, 463], [465, 465],
745        [467, 467], [469, 469], [471, 471], [473, 473], [475, 475],
746        [478, 478], [480, 480], [482, 482], [484, 484], [486, 486],
747        [488, 488], [490, 490], [492, 492], [494, 494], [497, 498],
748        [500, 500], [502, 504], [506, 506], [508, 508], [510, 510],
749        [512, 512], [514, 514], [516, 516], [518, 518], [520, 520],
750        [522, 522], [524, 524], [526, 526], [528, 528], [530, 530],
751        [532, 532], [534, 534], [536, 536], [538, 538], [540, 540],
752        [542, 542], [544, 544], [546, 546], [548, 548], [550, 550],
753        [552, 552], [554, 554], [556, 556], [558, 558], [560, 560],
754        [562, 562], [570, 571], [573, 574], [577, 577], [579, 582],
755        [584, 584], [586, 586], [588, 588], [590, 590], [880, 880],
756        [882, 882], [886, 886], [895, 895], [902, 902], [904, 906],
757        [908, 908], [910, 911], [913, 929], [931, 939], [975, 975],
758        [984, 984], [986, 986], [988, 988], [990, 990], [992, 992],
759        [994, 994], [996, 996], [998, 998], [1000, 1000], [1002, 1002],
760        [1004, 1004], [1006, 1006], [1012, 1012], [1015, 1015],
761        [1017, 1018], [1021, 1071], [1120, 1120], [1122, 1122],
762        [1124, 1124], [1126, 1126], [1128, 1128], [1130, 1130],
763        [1132, 1132], [1134, 1134], [1136, 1136], [1138, 1138],
764        [1140, 1140], [1142, 1142], [1144, 1144], [1146, 1146],
765        [1148, 1148], [1150, 1150], [1152, 1152], [1162, 1162],
766        [1164, 1164], [1166, 1166], [1168, 1168], [1170, 1170],
767        [1172, 1172], [1174, 1174], [1176, 1176], [1178, 1178],
768        [1180, 1180], [1182, 1182], [1184, 1184], [1186, 1186],
769        [1188, 1188], [1190, 1190], [1192, 1192], [1194, 1194],
770        [1196, 1196], [1198, 1198], [1200, 1200], [1202, 1202],
771        [1204, 1204], [1206, 1206], [1208, 1208], [1210, 1210],
772        [1212, 1212], [1214, 1214], [1216, 1217], [1219, 1219],
773        [1221, 1221], [1223, 1223], [1225, 1225], [1227, 1227],
774        [1229, 1229], [1232, 1232], [1234, 1234], [1236, 1236],
775        [1238, 1238], [1240, 1240], [1242, 1242], [1244, 1244],
776        [1246, 1246], [1248, 1248], [1250, 1250], [1252, 1252],
777        [1254, 1254], [1256, 1256], [1258, 1258], [1260, 1260],
778        [1262, 1262], [1264, 1264], [1266, 1266], [1268, 1268],
779        [1270, 1270], [1272, 1272], [1274, 1274], [1276, 1276],
780        [1278, 1278], [1280, 1280], [1282, 1282], [1284, 1284],
781        [1286, 1286], [1288, 1288], [1290, 1290], [1292, 1292],
782        [1294, 1294], [1296, 1296], [1298, 1298], [1300, 1300],
783        [1302, 1302], [1304, 1304], [1306, 1306], [1308, 1308],
784        [1310, 1310], [1312, 1312], [1314, 1314], [1316, 1316],
785        [1318, 1318], [1320, 1320], [1322, 1322], [1324, 1324],
786        [1326, 1326], [1329, 1366], [4256, 4293], [4295, 4295],
787        [4301, 4301], [5024, 5109], [7680, 7680], [7682, 7682],
788        [7684, 7684], [7686, 7686], [7688, 7688], [7690, 7690],
789        [7692, 7692], [7694, 7694], [7696, 7696], [7698, 7698],
790        [7700, 7700], [7702, 7702], [7704, 7704], [7706, 7706],
791        [7708, 7708], [7710, 7710], [7712, 7712], [7714, 7714],
792        [7716, 7716], [7718, 7718], [7720, 7720], [7722, 7722],
793        [7724, 7724], [7726, 7726], [7728, 7728], [7730, 7730],
794        [7732, 7732], [7734, 7734], [7736, 7736], [7738, 7738],
795        [7740, 7740], [7742, 7742], [7744, 7744], [7746, 7746],
796        [7748, 7748], [7750, 7750], [7752, 7752], [7754, 7754],
797        [7756, 7756], [7758, 7758], [7760, 7760], [7762, 7762],
798        [7764, 7764], [7766, 7766], [7768, 7768], [7770, 7770],
799        [7772, 7772], [7774, 7774], [7776, 7776], [7778, 7778],
800        [7780, 7780], [7782, 7782], [7784, 7784], [7786, 7786],
801        [7788, 7788], [7790, 7790], [7792, 7792], [7794, 7794],
802        [7796, 7796], [7798, 7798], [7800, 7800], [7802, 7802],
803        [7804, 7804], [7806, 7806], [7808, 7808], [7810, 7810],
804        [7812, 7812], [7814, 7814], [7816, 7816], [7818, 7818],
805        [7820, 7820], [7822, 7822], [7824, 7824], [7826, 7826],
806        [7828, 7828], [7838, 7838], [7840, 7840], [7842, 7842],
807        [7844, 7844], [7846, 7846], [7848, 7848], [7850, 7850],
808        [7852, 7852], [7854, 7854], [7856, 7856], [7858, 7858],
809        [7860, 7860], [7862, 7862], [7864, 7864], [7866, 7866],
810        [7868, 7868], [7870, 7870], [7872, 7872], [7874, 7874],
811        [7876, 7876], [7878, 7878], [7880, 7880], [7882, 7882],
812        [7884, 7884], [7886, 7886], [7888, 7888], [7890, 7890],
813        [7892, 7892], [7894, 7894], [7896, 7896], [7898, 7898],
814        [7900, 7900], [7902, 7902], [7904, 7904], [7906, 7906],
815        [7908, 7908], [7910, 7910], [7912, 7912], [7914, 7914],
816        [7916, 7916], [7918, 7918], [7920, 7920], [7922, 7922],
817        [7924, 7924], [7926, 7926], [7928, 7928], [7930, 7930],
818        [7932, 7932], [7934, 7934], [7944, 7951], [7960, 7965],
819        [7976, 7983], [7992, 7999], [8008, 8013], [8025, 8025],
820        [8027, 8027], [8029, 8029], [8031, 8031], [8040, 8047],
821        [8072, 8079], [8088, 8095], [8104, 8111], [8120, 8124],
822        [8136, 8140], [8152, 8155], [8168, 8172], [8184, 8188],
823        [8486, 8486], [8490, 8491], [8498, 8498], [8544, 8559],
824        [8579, 8579], [9398, 9423], [11264, 11310], [11360, 11360],
825        [11362, 11364], [11367, 11367], [11369, 11369], [11371, 11371],
826        [11373, 11376], [11378, 11378], [11381, 11381], [11390, 11392],
827        [11394, 11394], [11396, 11396], [11398, 11398], [11400, 11400],
828        [11402, 11402], [11404, 11404], [11406, 11406], [11408, 11408],
829        [11410, 11410], [11412, 11412], [11414, 11414], [11416, 11416],
830        [11418, 11418], [11420, 11420], [11422, 11422], [11424, 11424],
831        [11426, 11426], [11428, 11428], [11430, 11430], [11432, 11432],
832        [11434, 11434], [11436, 11436], [11438, 11438], [11440, 11440],
833        [11442, 11442], [11444, 11444], [11446, 11446], [11448, 11448],
834        [11450, 11450], [11452, 11452], [11454, 11454], [11456, 11456],
835        [11458, 11458], [11460, 11460], [11462, 11462], [11464, 11464],
836        [11466, 11466], [11468, 11468], [11470, 11470], [11472, 11472],
837        [11474, 11474], [11476, 11476], [11478, 11478], [11480, 11480],
838        [11482, 11482], [11484, 11484], [11486, 11486], [11488, 11488],
839        [11490, 11490], [11499, 11499], [11501, 11501], [11506, 11506],
840        [42560, 42560], [42562, 42562], [42564, 42564], [42566, 42566],
841        [42568, 42568], [42570, 42570], [42572, 42572], [42574, 42574],
842        [42576, 42576], [42578, 42578], [42580, 42580], [42582, 42582],
843        [42584, 42584], [42586, 42586], [42588, 42588], [42590, 42590],
844        [42592, 42592], [42594, 42594], [42596, 42596], [42598, 42598],
845        [42600, 42600], [42602, 42602], [42604, 42604], [42624, 42624],
846        [42626, 42626], [42628, 42628], [42630, 42630], [42632, 42632],
847        [42634, 42634], [42636, 42636], [42638, 42638], [42640, 42640],
848        [42642, 42642], [42644, 42644], [42646, 42646], [42648, 42648],
849        [42650, 42650], [42786, 42786], [42788, 42788], [42790, 42790],
850        [42792, 42792], [42794, 42794], [42796, 42796], [42798, 42798],
851        [42802, 42802], [42804, 42804], [42806, 42806], [42808, 42808],
852        [42810, 42810], [42812, 42812], [42814, 42814], [42816, 42816],
853        [42818, 42818], [42820, 42820], [42822, 42822], [42824, 42824],
854        [42826, 42826], [42828, 42828], [42830, 42830], [42832, 42832],
855        [42834, 42834], [42836, 42836], [42838, 42838], [42840, 42840],
856        [42842, 42842], [42844, 42844], [42846, 42846], [42848, 42848],
857        [42850, 42850], [42852, 42852], [42854, 42854], [42856, 42856],
858        [42858, 42858], [42860, 42860], [42862, 42862], [42873, 42873],
859        [42875, 42875], [42877, 42878], [42880, 42880], [42882, 42882],
860        [42884, 42884], [42886, 42886], [42891, 42891], [42893, 42893],
861        [42896, 42896], [42898, 42898], [42902, 42902], [42904, 42904],
862        [42906, 42906], [42908, 42908], [42910, 42910], [42912, 42912],
863        [42914, 42914], [42916, 42916], [42918, 42918], [42920, 42920],
864        [42922, 42925], [42928, 42932], [42934, 42934], [65313, 65338],
865        [66560, 66599], [68736, 68786], [71840, 71871]**/
866        const UnicodeSet codepoint_set
867            {{{Empty, 2}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 1},
868              {Mixed, 11}, {Empty, 8}, {Mixed, 5}, {Full, 1}, {Mixed, 1},
869              {Empty, 1}, {Mixed, 8}, {Empty, 90}, {Full, 1}, {Mixed, 1},
870              {Empty, 22}, {Full, 2}, {Mixed, 1}, {Empty, 80}, {Mixed, 16},
871              {Empty, 9}, {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Empty, 24},
872              {Mixed, 2}, {Empty, 57}, {Full, 1}, {Mixed, 1}, {Empty, 1},
873              {Mixed, 5}, {Empty, 970}, {Mixed, 3}, {Empty, 4}, {Mixed, 5},
874              {Empty, 699}, {Mixed, 1}, {Empty, 38}, {Full, 1}, {Mixed, 1},
875              {Empty, 66}, {Full, 1}, {Mixed, 1}, {Empty, 95}, {Full, 1},
876              {Empty, 32570}},
877             {0x07fffffe, 0x7f7fffff, 0x55555555, 0xaa555555, 0x555554aa,
878              0x2b555555, 0xb1dbced6, 0x11aed2d5, 0x4aaaadb0, 0x55d65555,
879              0x55555555, 0x6c055555, 0x0000557a, 0x80450000, 0xfffed740,
880              0x00000ffb, 0x55008000, 0xe6905555, 0x0000ffff, 0x55555555,
881              0x55555401, 0x55555555, 0x55552aab, 0x55555555, 0x55555555,
882              0xfffe5555, 0x007fffff, 0x000020bf, 0x003fffff, 0x55555555,
883              0x55555555, 0x55555555, 0x55555555, 0x40155555, 0x55555555,
884              0x55555555, 0x55555555, 0x3f00ff00, 0xff00ff00, 0xaa003f00,
885              0x0000ff00, 0xff00ff00, 0x1f00ff00, 0x0f001f00, 0x1f001f00,
886              0x00040c40, 0x0000ffff, 0x00000008, 0xffc00000, 0x0000ffff,
887              0x00007fff, 0xc025ea9d, 0x55555555, 0x55555555, 0x55555555,
888              0x00042805, 0x55555555, 0x00001555, 0x05555555, 0x55545554,
889              0x55555555, 0x6a005555, 0x55452855, 0x005f3d55, 0x07fffffe,
890              0x000000ff, 0x0007ffff}};
891        static BinaryPropertyObject property_object{CWL, codepoint_set};
892    }
893    namespace CWT_ns {
894        /** Code Point Ranges for CWT
895        [97, 122], [181, 181], [223, 246], [248, 255], [257, 257],
896        [259, 259], [261, 261], [263, 263], [265, 265], [267, 267],
897        [269, 269], [271, 271], [273, 273], [275, 275], [277, 277],
898        [279, 279], [281, 281], [283, 283], [285, 285], [287, 287],
899        [289, 289], [291, 291], [293, 293], [295, 295], [297, 297],
900        [299, 299], [301, 301], [303, 303], [305, 305], [307, 307],
901        [309, 309], [311, 311], [314, 314], [316, 316], [318, 318],
902        [320, 320], [322, 322], [324, 324], [326, 326], [328, 329],
903        [331, 331], [333, 333], [335, 335], [337, 337], [339, 339],
904        [341, 341], [343, 343], [345, 345], [347, 347], [349, 349],
905        [351, 351], [353, 353], [355, 355], [357, 357], [359, 359],
906        [361, 361], [363, 363], [365, 365], [367, 367], [369, 369],
907        [371, 371], [373, 373], [375, 375], [378, 378], [380, 380],
908        [382, 384], [387, 387], [389, 389], [392, 392], [396, 396],
909        [402, 402], [405, 405], [409, 410], [414, 414], [417, 417],
910        [419, 419], [421, 421], [424, 424], [429, 429], [432, 432],
911        [436, 436], [438, 438], [441, 441], [445, 445], [447, 447],
912        [452, 452], [454, 455], [457, 458], [460, 460], [462, 462],
913        [464, 464], [466, 466], [468, 468], [470, 470], [472, 472],
914        [474, 474], [476, 477], [479, 479], [481, 481], [483, 483],
915        [485, 485], [487, 487], [489, 489], [491, 491], [493, 493],
916        [495, 497], [499, 499], [501, 501], [505, 505], [507, 507],
917        [509, 509], [511, 511], [513, 513], [515, 515], [517, 517],
918        [519, 519], [521, 521], [523, 523], [525, 525], [527, 527],
919        [529, 529], [531, 531], [533, 533], [535, 535], [537, 537],
920        [539, 539], [541, 541], [543, 543], [547, 547], [549, 549],
921        [551, 551], [553, 553], [555, 555], [557, 557], [559, 559],
922        [561, 561], [563, 563], [572, 572], [575, 576], [578, 578],
923        [583, 583], [585, 585], [587, 587], [589, 589], [591, 596],
924        [598, 599], [601, 601], [603, 604], [608, 609], [611, 611],
925        [613, 614], [616, 617], [619, 620], [623, 623], [625, 626],
926        [629, 629], [637, 637], [640, 640], [643, 643], [647, 652],
927        [658, 658], [669, 670], [837, 837], [881, 881], [883, 883],
928        [887, 887], [891, 893], [912, 912], [940, 974], [976, 977],
929        [981, 983], [985, 985], [987, 987], [989, 989], [991, 991],
930        [993, 993], [995, 995], [997, 997], [999, 999], [1001, 1001],
931        [1003, 1003], [1005, 1005], [1007, 1011], [1013, 1013],
932        [1016, 1016], [1019, 1019], [1072, 1119], [1121, 1121],
933        [1123, 1123], [1125, 1125], [1127, 1127], [1129, 1129],
934        [1131, 1131], [1133, 1133], [1135, 1135], [1137, 1137],
935        [1139, 1139], [1141, 1141], [1143, 1143], [1145, 1145],
936        [1147, 1147], [1149, 1149], [1151, 1151], [1153, 1153],
937        [1163, 1163], [1165, 1165], [1167, 1167], [1169, 1169],
938        [1171, 1171], [1173, 1173], [1175, 1175], [1177, 1177],
939        [1179, 1179], [1181, 1181], [1183, 1183], [1185, 1185],
940        [1187, 1187], [1189, 1189], [1191, 1191], [1193, 1193],
941        [1195, 1195], [1197, 1197], [1199, 1199], [1201, 1201],
942        [1203, 1203], [1205, 1205], [1207, 1207], [1209, 1209],
943        [1211, 1211], [1213, 1213], [1215, 1215], [1218, 1218],
944        [1220, 1220], [1222, 1222], [1224, 1224], [1226, 1226],
945        [1228, 1228], [1230, 1231], [1233, 1233], [1235, 1235],
946        [1237, 1237], [1239, 1239], [1241, 1241], [1243, 1243],
947        [1245, 1245], [1247, 1247], [1249, 1249], [1251, 1251],
948        [1253, 1253], [1255, 1255], [1257, 1257], [1259, 1259],
949        [1261, 1261], [1263, 1263], [1265, 1265], [1267, 1267],
950        [1269, 1269], [1271, 1271], [1273, 1273], [1275, 1275],
951        [1277, 1277], [1279, 1279], [1281, 1281], [1283, 1283],
952        [1285, 1285], [1287, 1287], [1289, 1289], [1291, 1291],
953        [1293, 1293], [1295, 1295], [1297, 1297], [1299, 1299],
954        [1301, 1301], [1303, 1303], [1305, 1305], [1307, 1307],
955        [1309, 1309], [1311, 1311], [1313, 1313], [1315, 1315],
956        [1317, 1317], [1319, 1319], [1321, 1321], [1323, 1323],
957        [1325, 1325], [1327, 1327], [1377, 1415], [5112, 5117],
958        [7545, 7545], [7549, 7549], [7681, 7681], [7683, 7683],
959        [7685, 7685], [7687, 7687], [7689, 7689], [7691, 7691],
960        [7693, 7693], [7695, 7695], [7697, 7697], [7699, 7699],
961        [7701, 7701], [7703, 7703], [7705, 7705], [7707, 7707],
962        [7709, 7709], [7711, 7711], [7713, 7713], [7715, 7715],
963        [7717, 7717], [7719, 7719], [7721, 7721], [7723, 7723],
964        [7725, 7725], [7727, 7727], [7729, 7729], [7731, 7731],
965        [7733, 7733], [7735, 7735], [7737, 7737], [7739, 7739],
966        [7741, 7741], [7743, 7743], [7745, 7745], [7747, 7747],
967        [7749, 7749], [7751, 7751], [7753, 7753], [7755, 7755],
968        [7757, 7757], [7759, 7759], [7761, 7761], [7763, 7763],
969        [7765, 7765], [7767, 7767], [7769, 7769], [7771, 7771],
970        [7773, 7773], [7775, 7775], [7777, 7777], [7779, 7779],
971        [7781, 7781], [7783, 7783], [7785, 7785], [7787, 7787],
972        [7789, 7789], [7791, 7791], [7793, 7793], [7795, 7795],
973        [7797, 7797], [7799, 7799], [7801, 7801], [7803, 7803],
974        [7805, 7805], [7807, 7807], [7809, 7809], [7811, 7811],
975        [7813, 7813], [7815, 7815], [7817, 7817], [7819, 7819],
976        [7821, 7821], [7823, 7823], [7825, 7825], [7827, 7827],
977        [7829, 7835], [7841, 7841], [7843, 7843], [7845, 7845],
978        [7847, 7847], [7849, 7849], [7851, 7851], [7853, 7853],
979        [7855, 7855], [7857, 7857], [7859, 7859], [7861, 7861],
980        [7863, 7863], [7865, 7865], [7867, 7867], [7869, 7869],
981        [7871, 7871], [7873, 7873], [7875, 7875], [7877, 7877],
982        [7879, 7879], [7881, 7881], [7883, 7883], [7885, 7885],
983        [7887, 7887], [7889, 7889], [7891, 7891], [7893, 7893],
984        [7895, 7895], [7897, 7897], [7899, 7899], [7901, 7901],
985        [7903, 7903], [7905, 7905], [7907, 7907], [7909, 7909],
986        [7911, 7911], [7913, 7913], [7915, 7915], [7917, 7917],
987        [7919, 7919], [7921, 7921], [7923, 7923], [7925, 7925],
988        [7927, 7927], [7929, 7929], [7931, 7931], [7933, 7933],
989        [7935, 7943], [7952, 7957], [7968, 7975], [7984, 7991],
990        [8000, 8005], [8016, 8023], [8032, 8039], [8048, 8061],
991        [8064, 8071], [8080, 8087], [8096, 8103], [8112, 8116],
992        [8118, 8119], [8126, 8126], [8130, 8132], [8134, 8135],
993        [8144, 8147], [8150, 8151], [8160, 8167], [8178, 8180],
994        [8182, 8183], [8526, 8526], [8560, 8575], [8580, 8580],
995        [9424, 9449], [11312, 11358], [11361, 11361], [11365, 11366],
996        [11368, 11368], [11370, 11370], [11372, 11372], [11379, 11379],
997        [11382, 11382], [11393, 11393], [11395, 11395], [11397, 11397],
998        [11399, 11399], [11401, 11401], [11403, 11403], [11405, 11405],
999        [11407, 11407], [11409, 11409], [11411, 11411], [11413, 11413],
1000        [11415, 11415], [11417, 11417], [11419, 11419], [11421, 11421],
1001        [11423, 11423], [11425, 11425], [11427, 11427], [11429, 11429],
1002        [11431, 11431], [11433, 11433], [11435, 11435], [11437, 11437],
1003        [11439, 11439], [11441, 11441], [11443, 11443], [11445, 11445],
1004        [11447, 11447], [11449, 11449], [11451, 11451], [11453, 11453],
1005        [11455, 11455], [11457, 11457], [11459, 11459], [11461, 11461],
1006        [11463, 11463], [11465, 11465], [11467, 11467], [11469, 11469],
1007        [11471, 11471], [11473, 11473], [11475, 11475], [11477, 11477],
1008        [11479, 11479], [11481, 11481], [11483, 11483], [11485, 11485],
1009        [11487, 11487], [11489, 11489], [11491, 11491], [11500, 11500],
1010        [11502, 11502], [11507, 11507], [11520, 11557], [11559, 11559],
1011        [11565, 11565], [42561, 42561], [42563, 42563], [42565, 42565],
1012        [42567, 42567], [42569, 42569], [42571, 42571], [42573, 42573],
1013        [42575, 42575], [42577, 42577], [42579, 42579], [42581, 42581],
1014        [42583, 42583], [42585, 42585], [42587, 42587], [42589, 42589],
1015        [42591, 42591], [42593, 42593], [42595, 42595], [42597, 42597],
1016        [42599, 42599], [42601, 42601], [42603, 42603], [42605, 42605],
1017        [42625, 42625], [42627, 42627], [42629, 42629], [42631, 42631],
1018        [42633, 42633], [42635, 42635], [42637, 42637], [42639, 42639],
1019        [42641, 42641], [42643, 42643], [42645, 42645], [42647, 42647],
1020        [42649, 42649], [42651, 42651], [42787, 42787], [42789, 42789],
1021        [42791, 42791], [42793, 42793], [42795, 42795], [42797, 42797],
1022        [42799, 42799], [42803, 42803], [42805, 42805], [42807, 42807],
1023        [42809, 42809], [42811, 42811], [42813, 42813], [42815, 42815],
1024        [42817, 42817], [42819, 42819], [42821, 42821], [42823, 42823],
1025        [42825, 42825], [42827, 42827], [42829, 42829], [42831, 42831],
1026        [42833, 42833], [42835, 42835], [42837, 42837], [42839, 42839],
1027        [42841, 42841], [42843, 42843], [42845, 42845], [42847, 42847],
1028        [42849, 42849], [42851, 42851], [42853, 42853], [42855, 42855],
1029        [42857, 42857], [42859, 42859], [42861, 42861], [42863, 42863],
1030        [42874, 42874], [42876, 42876], [42879, 42879], [42881, 42881],
1031        [42883, 42883], [42885, 42885], [42887, 42887], [42892, 42892],
1032        [42897, 42897], [42899, 42899], [42903, 42903], [42905, 42905],
1033        [42907, 42907], [42909, 42909], [42911, 42911], [42913, 42913],
1034        [42915, 42915], [42917, 42917], [42919, 42919], [42921, 42921],
1035        [42933, 42933], [42935, 42935], [43859, 43859], [43888, 43967],
1036        [64256, 64262], [64275, 64279], [65345, 65370], [66600, 66639],
1037        [68800, 68850], [71872, 71903]**/
1038        const UnicodeSet codepoint_set
1039            {{{Empty, 3}, {Mixed, 1}, {Empty, 1}, {Mixed, 16}, {Empty, 5},
1040              {Mixed, 6}, {Empty, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 7},
1041              {Empty, 1}, {Mixed, 2}, {Empty, 114}, {Mixed, 1}, {Empty, 75},
1042              {Mixed, 1}, {Empty, 4}, {Mixed, 16}, {Empty, 10}, {Mixed, 3},
1043              {Empty, 25}, {Mixed, 2}, {Empty, 57}, {Mixed, 7}, {Full, 1},
1044              {Mixed, 1}, {Empty, 968}, {Mixed, 3}, {Empty, 4}, {Mixed, 5},
1045              {Empty, 28}, {Mixed, 2}, {Full, 2}, {Empty, 634}, {Mixed, 1},
1046              {Empty, 33}, {Mixed, 1}, {Empty, 38}, {Mixed, 2}, {Empty, 67},
1047              {Full, 1}, {Mixed, 1}, {Empty, 94}, {Full, 1}, {Empty, 32569}},
1048             {0x07fffffe, 0x00200000, 0x80000000, 0xff7fffff, 0xaaaaaaaa,
1049              0x54aaaaaa, 0xaaaaab55, 0xd4aaaaaa, 0x46241129, 0xa251212a,
1050              0xb55556d0, 0xaa2baaaa, 0xaaaaaaaa, 0x900aaaa8, 0x1adfaa85,
1051              0x20269b6b, 0x60041f89, 0x00000020, 0x388a0000, 0x00010000,
1052              0xfffff000, 0xaae37fff, 0x092faaaa, 0xffff0000, 0xaaaaaaaa,
1053              0xaaaaa802, 0xaaaaaaaa, 0xaaaad554, 0xaaaaaaaa, 0xaaaaaaaa,
1054              0x0000aaaa, 0xfffffffe, 0x000000ff, 0x3f000000, 0x22000000,
1055              0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x0feaaaaa,
1056              0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x003f00ff, 0x00ff00ff,
1057              0x00ff003f, 0x3fff00ff, 0x00ff00ff, 0x40df00ff, 0x00cf00dc,
1058              0x00dc00ff, 0x00004000, 0xffff0000, 0x00000010, 0xffff0000,
1059              0x000003ff, 0xffff0000, 0x7fffffff, 0x00481562, 0xaaaaaaaa,
1060              0xaaaaaaaa, 0xaaaaaaaa, 0x0008500a, 0x000020bf, 0xaaaaaaaa,
1061              0x00002aaa, 0x0aaaaaaa, 0xaaa8aaa8, 0xaaaaaaaa, 0x9400aaaa,
1062              0xaa8a10aa, 0x00a002aa, 0x00080000, 0xffff0000, 0x00f8007f,
1063              0x07fffffe, 0xffffff00, 0x0000ffff, 0x0007ffff}};
1064        static BinaryPropertyObject property_object{CWT, codepoint_set};
1065    }
1066    namespace CWU_ns {
1067        /** Code Point Ranges for CWU
1068        [97, 122], [181, 181], [223, 246], [248, 255], [257, 257],
1069        [259, 259], [261, 261], [263, 263], [265, 265], [267, 267],
1070        [269, 269], [271, 271], [273, 273], [275, 275], [277, 277],
1071        [279, 279], [281, 281], [283, 283], [285, 285], [287, 287],
1072        [289, 289], [291, 291], [293, 293], [295, 295], [297, 297],
1073        [299, 299], [301, 301], [303, 303], [305, 305], [307, 307],
1074        [309, 309], [311, 311], [314, 314], [316, 316], [318, 318],
1075        [320, 320], [322, 322], [324, 324], [326, 326], [328, 329],
1076        [331, 331], [333, 333], [335, 335], [337, 337], [339, 339],
1077        [341, 341], [343, 343], [345, 345], [347, 347], [349, 349],
1078        [351, 351], [353, 353], [355, 355], [357, 357], [359, 359],
1079        [361, 361], [363, 363], [365, 365], [367, 367], [369, 369],
1080        [371, 371], [373, 373], [375, 375], [378, 378], [380, 380],
1081        [382, 384], [387, 387], [389, 389], [392, 392], [396, 396],
1082        [402, 402], [405, 405], [409, 410], [414, 414], [417, 417],
1083        [419, 419], [421, 421], [424, 424], [429, 429], [432, 432],
1084        [436, 436], [438, 438], [441, 441], [445, 445], [447, 447],
1085        [453, 454], [456, 457], [459, 460], [462, 462], [464, 464],
1086        [466, 466], [468, 468], [470, 470], [472, 472], [474, 474],
1087        [476, 477], [479, 479], [481, 481], [483, 483], [485, 485],
1088        [487, 487], [489, 489], [491, 491], [493, 493], [495, 496],
1089        [498, 499], [501, 501], [505, 505], [507, 507], [509, 509],
1090        [511, 511], [513, 513], [515, 515], [517, 517], [519, 519],
1091        [521, 521], [523, 523], [525, 525], [527, 527], [529, 529],
1092        [531, 531], [533, 533], [535, 535], [537, 537], [539, 539],
1093        [541, 541], [543, 543], [547, 547], [549, 549], [551, 551],
1094        [553, 553], [555, 555], [557, 557], [559, 559], [561, 561],
1095        [563, 563], [572, 572], [575, 576], [578, 578], [583, 583],
1096        [585, 585], [587, 587], [589, 589], [591, 596], [598, 599],
1097        [601, 601], [603, 604], [608, 609], [611, 611], [613, 614],
1098        [616, 617], [619, 620], [623, 623], [625, 626], [629, 629],
1099        [637, 637], [640, 640], [643, 643], [647, 652], [658, 658],
1100        [669, 670], [837, 837], [881, 881], [883, 883], [887, 887],
1101        [891, 893], [912, 912], [940, 974], [976, 977], [981, 983],
1102        [985, 985], [987, 987], [989, 989], [991, 991], [993, 993],
1103        [995, 995], [997, 997], [999, 999], [1001, 1001], [1003, 1003],
1104        [1005, 1005], [1007, 1011], [1013, 1013], [1016, 1016],
1105        [1019, 1019], [1072, 1119], [1121, 1121], [1123, 1123],
1106        [1125, 1125], [1127, 1127], [1129, 1129], [1131, 1131],
1107        [1133, 1133], [1135, 1135], [1137, 1137], [1139, 1139],
1108        [1141, 1141], [1143, 1143], [1145, 1145], [1147, 1147],
1109        [1149, 1149], [1151, 1151], [1153, 1153], [1163, 1163],
1110        [1165, 1165], [1167, 1167], [1169, 1169], [1171, 1171],
1111        [1173, 1173], [1175, 1175], [1177, 1177], [1179, 1179],
1112        [1181, 1181], [1183, 1183], [1185, 1185], [1187, 1187],
1113        [1189, 1189], [1191, 1191], [1193, 1193], [1195, 1195],
1114        [1197, 1197], [1199, 1199], [1201, 1201], [1203, 1203],
1115        [1205, 1205], [1207, 1207], [1209, 1209], [1211, 1211],
1116        [1213, 1213], [1215, 1215], [1218, 1218], [1220, 1220],
1117        [1222, 1222], [1224, 1224], [1226, 1226], [1228, 1228],
1118        [1230, 1231], [1233, 1233], [1235, 1235], [1237, 1237],
1119        [1239, 1239], [1241, 1241], [1243, 1243], [1245, 1245],
1120        [1247, 1247], [1249, 1249], [1251, 1251], [1253, 1253],
1121        [1255, 1255], [1257, 1257], [1259, 1259], [1261, 1261],
1122        [1263, 1263], [1265, 1265], [1267, 1267], [1269, 1269],
1123        [1271, 1271], [1273, 1273], [1275, 1275], [1277, 1277],
1124        [1279, 1279], [1281, 1281], [1283, 1283], [1285, 1285],
1125        [1287, 1287], [1289, 1289], [1291, 1291], [1293, 1293],
1126        [1295, 1295], [1297, 1297], [1299, 1299], [1301, 1301],
1127        [1303, 1303], [1305, 1305], [1307, 1307], [1309, 1309],
1128        [1311, 1311], [1313, 1313], [1315, 1315], [1317, 1317],
1129        [1319, 1319], [1321, 1321], [1323, 1323], [1325, 1325],
1130        [1327, 1327], [1377, 1415], [5112, 5117], [7545, 7545],
1131        [7549, 7549], [7681, 7681], [7683, 7683], [7685, 7685],
1132        [7687, 7687], [7689, 7689], [7691, 7691], [7693, 7693],
1133        [7695, 7695], [7697, 7697], [7699, 7699], [7701, 7701],
1134        [7703, 7703], [7705, 7705], [7707, 7707], [7709, 7709],
1135        [7711, 7711], [7713, 7713], [7715, 7715], [7717, 7717],
1136        [7719, 7719], [7721, 7721], [7723, 7723], [7725, 7725],
1137        [7727, 7727], [7729, 7729], [7731, 7731], [7733, 7733],
1138        [7735, 7735], [7737, 7737], [7739, 7739], [7741, 7741],
1139        [7743, 7743], [7745, 7745], [7747, 7747], [7749, 7749],
1140        [7751, 7751], [7753, 7753], [7755, 7755], [7757, 7757],
1141        [7759, 7759], [7761, 7761], [7763, 7763], [7765, 7765],
1142        [7767, 7767], [7769, 7769], [7771, 7771], [7773, 7773],
1143        [7775, 7775], [7777, 7777], [7779, 7779], [7781, 7781],
1144        [7783, 7783], [7785, 7785], [7787, 7787], [7789, 7789],
1145        [7791, 7791], [7793, 7793], [7795, 7795], [7797, 7797],
1146        [7799, 7799], [7801, 7801], [7803, 7803], [7805, 7805],
1147        [7807, 7807], [7809, 7809], [7811, 7811], [7813, 7813],
1148        [7815, 7815], [7817, 7817], [7819, 7819], [7821, 7821],
1149        [7823, 7823], [7825, 7825], [7827, 7827], [7829, 7835],
1150        [7841, 7841], [7843, 7843], [7845, 7845], [7847, 7847],
1151        [7849, 7849], [7851, 7851], [7853, 7853], [7855, 7855],
1152        [7857, 7857], [7859, 7859], [7861, 7861], [7863, 7863],
1153        [7865, 7865], [7867, 7867], [7869, 7869], [7871, 7871],
1154        [7873, 7873], [7875, 7875], [7877, 7877], [7879, 7879],
1155        [7881, 7881], [7883, 7883], [7885, 7885], [7887, 7887],
1156        [7889, 7889], [7891, 7891], [7893, 7893], [7895, 7895],
1157        [7897, 7897], [7899, 7899], [7901, 7901], [7903, 7903],
1158        [7905, 7905], [7907, 7907], [7909, 7909], [7911, 7911],
1159        [7913, 7913], [7915, 7915], [7917, 7917], [7919, 7919],
1160        [7921, 7921], [7923, 7923], [7925, 7925], [7927, 7927],
1161        [7929, 7929], [7931, 7931], [7933, 7933], [7935, 7943],
1162        [7952, 7957], [7968, 7975], [7984, 7991], [8000, 8005],
1163        [8016, 8023], [8032, 8039], [8048, 8061], [8064, 8116],
1164        [8118, 8119], [8124, 8124], [8126, 8126], [8130, 8132],
1165        [8134, 8135], [8140, 8140], [8144, 8147], [8150, 8151],
1166        [8160, 8167], [8178, 8180], [8182, 8183], [8188, 8188],
1167        [8526, 8526], [8560, 8575], [8580, 8580], [9424, 9449],
1168        [11312, 11358], [11361, 11361], [11365, 11366], [11368, 11368],
1169        [11370, 11370], [11372, 11372], [11379, 11379], [11382, 11382],
1170        [11393, 11393], [11395, 11395], [11397, 11397], [11399, 11399],
1171        [11401, 11401], [11403, 11403], [11405, 11405], [11407, 11407],
1172        [11409, 11409], [11411, 11411], [11413, 11413], [11415, 11415],
1173        [11417, 11417], [11419, 11419], [11421, 11421], [11423, 11423],
1174        [11425, 11425], [11427, 11427], [11429, 11429], [11431, 11431],
1175        [11433, 11433], [11435, 11435], [11437, 11437], [11439, 11439],
1176        [11441, 11441], [11443, 11443], [11445, 11445], [11447, 11447],
1177        [11449, 11449], [11451, 11451], [11453, 11453], [11455, 11455],
1178        [11457, 11457], [11459, 11459], [11461, 11461], [11463, 11463],
1179        [11465, 11465], [11467, 11467], [11469, 11469], [11471, 11471],
1180        [11473, 11473], [11475, 11475], [11477, 11477], [11479, 11479],
1181        [11481, 11481], [11483, 11483], [11485, 11485], [11487, 11487],
1182        [11489, 11489], [11491, 11491], [11500, 11500], [11502, 11502],
1183        [11507, 11507], [11520, 11557], [11559, 11559], [11565, 11565],
1184        [42561, 42561], [42563, 42563], [42565, 42565], [42567, 42567],
1185        [42569, 42569], [42571, 42571], [42573, 42573], [42575, 42575],
1186        [42577, 42577], [42579, 42579], [42581, 42581], [42583, 42583],
1187        [42585, 42585], [42587, 42587], [42589, 42589], [42591, 42591],
1188        [42593, 42593], [42595, 42595], [42597, 42597], [42599, 42599],
1189        [42601, 42601], [42603, 42603], [42605, 42605], [42625, 42625],
1190        [42627, 42627], [42629, 42629], [42631, 42631], [42633, 42633],
1191        [42635, 42635], [42637, 42637], [42639, 42639], [42641, 42641],
1192        [42643, 42643], [42645, 42645], [42647, 42647], [42649, 42649],
1193        [42651, 42651], [42787, 42787], [42789, 42789], [42791, 42791],
1194        [42793, 42793], [42795, 42795], [42797, 42797], [42799, 42799],
1195        [42803, 42803], [42805, 42805], [42807, 42807], [42809, 42809],
1196        [42811, 42811], [42813, 42813], [42815, 42815], [42817, 42817],
1197        [42819, 42819], [42821, 42821], [42823, 42823], [42825, 42825],
1198        [42827, 42827], [42829, 42829], [42831, 42831], [42833, 42833],
1199        [42835, 42835], [42837, 42837], [42839, 42839], [42841, 42841],
1200        [42843, 42843], [42845, 42845], [42847, 42847], [42849, 42849],
1201        [42851, 42851], [42853, 42853], [42855, 42855], [42857, 42857],
1202        [42859, 42859], [42861, 42861], [42863, 42863], [42874, 42874],
1203        [42876, 42876], [42879, 42879], [42881, 42881], [42883, 42883],
1204        [42885, 42885], [42887, 42887], [42892, 42892], [42897, 42897],
1205        [42899, 42899], [42903, 42903], [42905, 42905], [42907, 42907],
1206        [42909, 42909], [42911, 42911], [42913, 42913], [42915, 42915],
1207        [42917, 42917], [42919, 42919], [42921, 42921], [42933, 42933],
1208        [42935, 42935], [43859, 43859], [43888, 43967], [64256, 64262],
1209        [64275, 64279], [65345, 65370], [66600, 66639], [68800, 68850],
1210        [71872, 71903]**/
1211        const UnicodeSet codepoint_set
1212            {{{Empty, 3}, {Mixed, 1}, {Empty, 1}, {Mixed, 16}, {Empty, 5},
1213              {Mixed, 6}, {Empty, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 7},
1214              {Empty, 1}, {Mixed, 2}, {Empty, 114}, {Mixed, 1}, {Empty, 75},
1215              {Mixed, 1}, {Empty, 4}, {Mixed, 12}, {Full, 1}, {Mixed, 3},
1216              {Empty, 10}, {Mixed, 3}, {Empty, 25}, {Mixed, 2}, {Empty, 57},
1217              {Mixed, 7}, {Full, 1}, {Mixed, 1}, {Empty, 968}, {Mixed, 3},
1218              {Empty, 4}, {Mixed, 5}, {Empty, 28}, {Mixed, 2}, {Full, 2},
1219              {Empty, 634}, {Mixed, 1}, {Empty, 33}, {Mixed, 1},
1220              {Empty, 38}, {Mixed, 2}, {Empty, 67}, {Full, 1}, {Mixed, 1},
1221              {Empty, 94}, {Full, 1}, {Empty, 32569}},
1222             {0x07fffffe, 0x00200000, 0x80000000, 0xff7fffff, 0xaaaaaaaa,
1223              0x54aaaaaa, 0xaaaaab55, 0xd4aaaaaa, 0x46241129, 0xa251212a,
1224              0xb5555b60, 0xaa2daaaa, 0xaaaaaaaa, 0x900aaaa8, 0x1adfaa85,
1225              0x20269b6b, 0x60041f89, 0x00000020, 0x388a0000, 0x00010000,
1226              0xfffff000, 0xaae37fff, 0x092faaaa, 0xffff0000, 0xaaaaaaaa,
1227              0xaaaaa802, 0xaaaaaaaa, 0xaaaad554, 0xaaaaaaaa, 0xaaaaaaaa,
1228              0x0000aaaa, 0xfffffffe, 0x000000ff, 0x3f000000, 0x22000000,
1229              0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x0feaaaaa,
1230              0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x003f00ff, 0x00ff00ff,
1231              0x00ff003f, 0x3fff00ff, 0x50dfffff, 0x00cf10dc, 0x10dc00ff,
1232              0x00004000, 0xffff0000, 0x00000010, 0xffff0000, 0x000003ff,
1233              0xffff0000, 0x7fffffff, 0x00481562, 0xaaaaaaaa, 0xaaaaaaaa,
1234              0xaaaaaaaa, 0x0008500a, 0x000020bf, 0xaaaaaaaa, 0x00002aaa,
1235              0x0aaaaaaa, 0xaaa8aaa8, 0xaaaaaaaa, 0x9400aaaa, 0xaa8a10aa,
1236              0x00a002aa, 0x00080000, 0xffff0000, 0x00f8007f, 0x07fffffe,
1237              0xffffff00, 0x0000ffff, 0x0007ffff}};
1238        static BinaryPropertyObject property_object{CWU, codepoint_set};
1239    }
1240    namespace CASED_ns {
1241        /** Code Point Ranges for Cased
1242        [65, 90], [97, 122], [170, 170], [181, 181], [186, 186], [192, 214],
1243        [216, 246], [248, 442], [444, 447], [452, 659], [661, 696],
1244        [704, 705], [736, 740], [837, 837], [880, 883], [886, 887],
1245        [890, 893], [895, 895], [902, 902], [904, 906], [908, 908],
1246        [910, 929], [931, 1013], [1015, 1153], [1162, 1327], [1329, 1366],
1247        [1377, 1415], [4256, 4293], [4295, 4295], [4301, 4301],
1248        [5024, 5109], [5112, 5117], [7424, 7615], [7680, 7957],
1249        [7960, 7965], [7968, 8005], [8008, 8013], [8016, 8023],
1250        [8025, 8025], [8027, 8027], [8029, 8029], [8031, 8061],
1251        [8064, 8116], [8118, 8124], [8126, 8126], [8130, 8132],
1252        [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172],
1253        [8178, 8180], [8182, 8188], [8305, 8305], [8319, 8319],
1254        [8336, 8348], [8450, 8450], [8455, 8455], [8458, 8467],
1255        [8469, 8469], [8473, 8477], [8484, 8484], [8486, 8486],
1256        [8488, 8488], [8490, 8493], [8495, 8500], [8505, 8505],
1257        [8508, 8511], [8517, 8521], [8526, 8526], [8544, 8575],
1258        [8579, 8580], [9398, 9449], [11264, 11310], [11312, 11358],
1259        [11360, 11492], [11499, 11502], [11506, 11507], [11520, 11557],
1260        [11559, 11559], [11565, 11565], [42560, 42605], [42624, 42653],
1261        [42786, 42887], [42891, 42894], [42896, 42925], [42928, 42935],
1262        [43000, 43002], [43824, 43866], [43868, 43877], [43888, 43967],
1263        [64256, 64262], [64275, 64279], [65313, 65338], [65345, 65370],
1264        [66560, 66639], [68736, 68786], [68800, 68850], [71840, 71903],
1265        [119808, 119892], [119894, 119964], [119966, 119967],
1266        [119970, 119970], [119973, 119974], [119977, 119980],
1267        [119982, 119993], [119995, 119995], [119997, 120003],
1268        [120005, 120069], [120071, 120074], [120077, 120084],
1269        [120086, 120092], [120094, 120121], [120123, 120126],
1270        [120128, 120132], [120134, 120134], [120138, 120144],
1271        [120146, 120485], [120488, 120512], [120514, 120538],
1272        [120540, 120570], [120572, 120596], [120598, 120628],
1273        [120630, 120654], [120656, 120686], [120688, 120712],
1274        [120714, 120744], [120746, 120770], [120772, 120779],
1275        [127280, 127305], [127312, 127337], [127344, 127369]**/
1276        const UnicodeSet codepoint_set
1277            {{{Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Full, 5},
1278              {Mixed, 2}, {Full, 5}, {Mixed, 4}, {Empty, 2}, {Mixed, 4},
1279              {Full, 1}, {Mixed, 1}, {Full, 4}, {Mixed, 1}, {Full, 4},
1280              {Mixed, 4}, {Empty, 88}, {Full, 1}, {Mixed, 1}, {Empty, 22},
1281              {Full, 2}, {Mixed, 1}, {Empty, 72}, {Full, 6}, {Empty, 2},
1282              {Full, 8}, {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 1},
1283              {Mixed, 3}, {Empty, 3}, {Mixed, 2}, {Empty, 3}, {Mixed, 3},
1284              {Full, 1}, {Mixed, 1}, {Empty, 24}, {Mixed, 1}, {Full, 1},
1285              {Mixed, 1}, {Empty, 56}, {Full, 1}, {Mixed, 2}, {Full, 4},
1286              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 968}, {Full, 1},
1287              {Mixed, 2}, {Empty, 4}, {Mixed, 1}, {Full, 2}, {Mixed, 2},
1288              {Empty, 1}, {Mixed, 1}, {Empty, 25}, {Mixed, 3}, {Full, 2},
1289              {Empty, 634}, {Mixed, 1}, {Empty, 32}, {Mixed, 2},
1290              {Empty, 37}, {Full, 2}, {Mixed, 1}, {Empty, 65}, {Full, 1},
1291              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 93}, {Full, 2},
1292              {Empty, 1497}, {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
1293              {Full, 1}, {Mixed, 3}, {Full, 10}, {Mixed, 10}, {Empty, 202},
1294              {Mixed, 4}, {Empty, 30835}},
1295             {0x07fffffe, 0x07fffffe, 0x04200400, 0xff7fffff, 0xff7fffff,
1296              0xf7ffffff, 0xfffffff0, 0xffefffff, 0x01ffffff, 0x00000003,
1297              0x0000001f, 0x00000020, 0xbccf0000, 0xffffd740, 0xfffffffb,
1298              0xffbfffff, 0xfffffc03, 0xfffeffff, 0x007fffff, 0xfffffffe,
1299              0x000000ff, 0x000020bf, 0x3f3fffff, 0x3f3fffff, 0xaaff3f3f,
1300              0x3fffffff, 0x5fdfffff, 0x0fcf1fdc, 0x1fdc1fff, 0x80020000,
1301              0x1fff0000, 0x3e2ffc84, 0xf21fbd50, 0x000043e0, 0x00000018,
1302              0xffc00000, 0x000003ff, 0xffff7fff, 0x7fffffff, 0x000c781f,
1303              0x000020bf, 0x00003fff, 0x3fffffff, 0xfffffffc, 0xffff78ff,
1304              0x00ff3fff, 0x07000000, 0xffff0000, 0xf7ffffff, 0xffff003f,
1305              0x00f8007f, 0x07fffffe, 0x07fffffe, 0x0000ffff, 0x0007ffff,
1306              0x0007ffff, 0xffdfffff, 0xdfffffff, 0xebffde64, 0xffffffef,
1307              0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffff3f, 0xf7fffffd,
1308              0xf7ffffff, 0xffdfffff, 0xffdfffff, 0xffff7fff, 0xffff7fff,
1309              0xfffffdff, 0xfffffdff, 0x00000ff7, 0xffff0000, 0xffff03ff,
1310              0xffff03ff, 0x000003ff}};
1311        static BinaryPropertyObject property_object{Cased, codepoint_set};
1312    }
1313    namespace DI_ns {
1314        /** Code Point Ranges for DI
1315        [173, 173], [847, 847], [1564, 1564], [4447, 4448], [6068, 6069],
1316        [6155, 6158], [8203, 8207], [8234, 8238], [8288, 8303],
1317        [12644, 12644], [65024, 65039], [65279, 65279], [65440, 65440],
1318        [65520, 65528], [113824, 113827], [119155, 119162],
1319        [917504, 921599]**/
1320        const UnicodeSet codepoint_set
1321            {{{Empty, 5}, {Mixed, 1}, {Empty, 20}, {Mixed, 1}, {Empty, 21},
1322              {Mixed, 1}, {Empty, 89}, {Mixed, 2}, {Empty, 49}, {Mixed, 1},
1323              {Empty, 2}, {Mixed, 1}, {Empty, 63}, {Mixed, 2}, {Empty, 1},
1324              {Mixed, 1}, {Empty, 135}, {Mixed, 1}, {Empty, 1636},
1325              {Mixed, 1}, {Empty, 6}, {Mixed, 1}, {Empty, 5}, {Mixed, 1},
1326              {Empty, 1}, {Mixed, 1}, {Empty, 1509}, {Mixed, 1},
1327              {Empty, 165}, {Mixed, 1}, {Empty, 24948}, {Full, 128},
1328              {Empty, 6016}},
1329             {0x00002000, 0x00008000, 0x10000000, 0x80000000, 0x00000001,
1330              0x00300000, 0x00007800, 0x0000f800, 0x00007c00, 0x0000ffff,
1331              0x00000010, 0x0000ffff, 0x80000000, 0x00000001, 0x01ff0000,
1332              0x0000000f, 0x07f80000}};
1333        static BinaryPropertyObject property_object{DI, codepoint_set};
1334    }
1335    namespace GR_BASE_ns {
1336        /** Code Point Ranges for Gr_Base
1337        [32, 126], [160, 172], [174, 767], [880, 887], [890, 895],
1338        [900, 906], [908, 908], [910, 929], [931, 1154], [1162, 1327],
1339        [1329, 1366], [1369, 1375], [1377, 1415], [1417, 1418],
1340        [1421, 1423], [1470, 1470], [1472, 1472], [1475, 1475],
1341        [1478, 1478], [1488, 1514], [1520, 1524], [1542, 1551],
1342        [1563, 1563], [1566, 1610], [1632, 1647], [1649, 1749],
1343        [1758, 1758], [1765, 1766], [1769, 1769], [1774, 1805],
1344        [1808, 1808], [1810, 1839], [1869, 1957], [1969, 1969],
1345        [1984, 2026], [2036, 2042], [2048, 2069], [2074, 2074],
1346        [2084, 2084], [2088, 2088], [2096, 2110], [2112, 2136],
1347        [2142, 2142], [2208, 2228], [2307, 2361], [2363, 2363],
1348        [2365, 2368], [2377, 2380], [2382, 2384], [2392, 2401],
1349        [2404, 2432], [2434, 2435], [2437, 2444], [2447, 2448],
1350        [2451, 2472], [2474, 2480], [2482, 2482], [2486, 2489],
1351        [2493, 2493], [2495, 2496], [2503, 2504], [2507, 2508],
1352        [2510, 2510], [2524, 2525], [2527, 2529], [2534, 2555],
1353        [2563, 2563], [2565, 2570], [2575, 2576], [2579, 2600],
1354        [2602, 2608], [2610, 2611], [2613, 2614], [2616, 2617],
1355        [2622, 2624], [2649, 2652], [2654, 2654], [2662, 2671],
1356        [2674, 2676], [2691, 2691], [2693, 2701], [2703, 2705],
1357        [2707, 2728], [2730, 2736], [2738, 2739], [2741, 2745],
1358        [2749, 2752], [2761, 2761], [2763, 2764], [2768, 2768],
1359        [2784, 2785], [2790, 2801], [2809, 2809], [2818, 2819],
1360        [2821, 2828], [2831, 2832], [2835, 2856], [2858, 2864],
1361        [2866, 2867], [2869, 2873], [2877, 2877], [2880, 2880],
1362        [2887, 2888], [2891, 2892], [2908, 2909], [2911, 2913],
1363        [2918, 2935], [2947, 2947], [2949, 2954], [2958, 2960],
1364        [2962, 2965], [2969, 2970], [2972, 2972], [2974, 2975],
1365        [2979, 2980], [2984, 2986], [2990, 3001], [3007, 3007],
1366        [3009, 3010], [3014, 3016], [3018, 3020], [3024, 3024],
1367        [3046, 3066], [3073, 3075], [3077, 3084], [3086, 3088],
1368        [3090, 3112], [3114, 3129], [3133, 3133], [3137, 3140],
1369        [3160, 3162], [3168, 3169], [3174, 3183], [3192, 3199],
1370        [3202, 3203], [3205, 3212], [3214, 3216], [3218, 3240],
1371        [3242, 3251], [3253, 3257], [3261, 3262], [3264, 3265],
1372        [3267, 3268], [3271, 3272], [3274, 3275], [3294, 3294],
1373        [3296, 3297], [3302, 3311], [3313, 3314], [3330, 3331],
1374        [3333, 3340], [3342, 3344], [3346, 3386], [3389, 3389],
1375        [3391, 3392], [3398, 3400], [3402, 3404], [3406, 3406],
1376        [3423, 3425], [3430, 3445], [3449, 3455], [3458, 3459],
1377        [3461, 3478], [3482, 3505], [3507, 3515], [3517, 3517],
1378        [3520, 3526], [3536, 3537], [3544, 3550], [3558, 3567],
1379        [3570, 3572], [3585, 3632], [3634, 3635], [3647, 3654],
1380        [3663, 3675], [3713, 3714], [3716, 3716], [3719, 3720],
1381        [3722, 3722], [3725, 3725], [3732, 3735], [3737, 3743],
1382        [3745, 3747], [3749, 3749], [3751, 3751], [3754, 3755],
1383        [3757, 3760], [3762, 3763], [3773, 3773], [3776, 3780],
1384        [3782, 3782], [3792, 3801], [3804, 3807], [3840, 3863],
1385        [3866, 3892], [3894, 3894], [3896, 3896], [3898, 3911],
1386        [3913, 3948], [3967, 3967], [3973, 3973], [3976, 3980],
1387        [4030, 4037], [4039, 4044], [4046, 4058], [4096, 4140],
1388        [4145, 4145], [4152, 4152], [4155, 4156], [4159, 4183],
1389        [4186, 4189], [4193, 4208], [4213, 4225], [4227, 4228],
1390        [4231, 4236], [4238, 4252], [4254, 4293], [4295, 4295],
1391        [4301, 4301], [4304, 4680], [4682, 4685], [4688, 4694],
1392        [4696, 4696], [4698, 4701], [4704, 4744], [4746, 4749],
1393        [4752, 4784], [4786, 4789], [4792, 4798], [4800, 4800],
1394        [4802, 4805], [4808, 4822], [4824, 4880], [4882, 4885],
1395        [4888, 4954], [4960, 4988], [4992, 5017], [5024, 5109],
1396        [5112, 5117], [5120, 5788], [5792, 5880], [5888, 5900],
1397        [5902, 5905], [5920, 5937], [5941, 5942], [5952, 5969],
1398        [5984, 5996], [5998, 6000], [6016, 6067], [6070, 6070],
1399        [6078, 6085], [6087, 6088], [6100, 6108], [6112, 6121],
1400        [6128, 6137], [6144, 6154], [6160, 6169], [6176, 6263],
1401        [6272, 6312], [6314, 6314], [6320, 6389], [6400, 6430],
1402        [6435, 6438], [6441, 6443], [6448, 6449], [6451, 6456],
1403        [6464, 6464], [6468, 6509], [6512, 6516], [6528, 6571],
1404        [6576, 6601], [6608, 6618], [6622, 6678], [6681, 6682],
1405        [6686, 6741], [6743, 6743], [6753, 6753], [6755, 6756],
1406        [6765, 6770], [6784, 6793], [6800, 6809], [6816, 6829],
1407        [6916, 6963], [6965, 6965], [6971, 6971], [6973, 6977],
1408        [6979, 6987], [6992, 7018], [7028, 7036], [7042, 7073],
1409        [7078, 7079], [7082, 7082], [7086, 7141], [7143, 7143],
1410        [7146, 7148], [7150, 7150], [7154, 7155], [7164, 7211],
1411        [7220, 7221], [7227, 7241], [7245, 7295], [7360, 7367],
1412        [7379, 7379], [7393, 7393], [7401, 7404], [7406, 7411],
1413        [7413, 7414], [7424, 7615], [7680, 7957], [7960, 7965],
1414        [7968, 8005], [8008, 8013], [8016, 8023], [8025, 8025],
1415        [8027, 8027], [8029, 8029], [8031, 8061], [8064, 8116],
1416        [8118, 8132], [8134, 8147], [8150, 8155], [8157, 8175],
1417        [8178, 8180], [8182, 8190], [8192, 8202], [8208, 8231],
1418        [8239, 8287], [8304, 8305], [8308, 8334], [8336, 8348],
1419        [8352, 8382], [8448, 8587], [8592, 9210], [9216, 9254],
1420        [9280, 9290], [9312, 11123], [11126, 11157], [11160, 11193],
1421        [11197, 11208], [11210, 11217], [11244, 11247], [11264, 11310],
1422        [11312, 11358], [11360, 11502], [11506, 11507], [11513, 11557],
1423        [11559, 11559], [11565, 11565], [11568, 11623], [11631, 11632],
1424        [11648, 11670], [11680, 11686], [11688, 11694], [11696, 11702],
1425        [11704, 11710], [11712, 11718], [11720, 11726], [11728, 11734],
1426        [11736, 11742], [11776, 11842], [11904, 11929], [11931, 12019],
1427        [12032, 12245], [12272, 12283], [12288, 12329], [12336, 12351],
1428        [12353, 12438], [12443, 12543], [12549, 12589], [12593, 12686],
1429        [12688, 12730], [12736, 12771], [12784, 12830], [12832, 13054],
1430        [13056, 19893], [19904, 40917], [40960, 42124], [42128, 42182],
1431        [42192, 42539], [42560, 42606], [42611, 42611], [42622, 42653],
1432        [42656, 42735], [42738, 42743], [42752, 42925], [42928, 42935],
1433        [42999, 43009], [43011, 43013], [43015, 43018], [43020, 43044],
1434        [43047, 43051], [43056, 43065], [43072, 43127], [43136, 43203],
1435        [43214, 43225], [43250, 43261], [43264, 43301], [43310, 43334],
1436        [43346, 43347], [43359, 43388], [43395, 43442], [43444, 43445],
1437        [43450, 43451], [43453, 43469], [43471, 43481], [43486, 43492],
1438        [43494, 43518], [43520, 43560], [43567, 43568], [43571, 43572],
1439        [43584, 43586], [43588, 43595], [43597, 43597], [43600, 43609],
1440        [43612, 43643], [43645, 43695], [43697, 43697], [43701, 43702],
1441        [43705, 43709], [43712, 43712], [43714, 43714], [43739, 43755],
1442        [43758, 43765], [43777, 43782], [43785, 43790], [43793, 43798],
1443        [43808, 43814], [43816, 43822], [43824, 43877], [43888, 44004],
1444        [44006, 44007], [44009, 44012], [44016, 44025], [44032, 55203],
1445        [55216, 55238], [55243, 55291], [63744, 64109], [64112, 64217],
1446        [64256, 64262], [64275, 64279], [64285, 64285], [64287, 64310],
1447        [64312, 64316], [64318, 64318], [64320, 64321], [64323, 64324],
1448        [64326, 64449], [64467, 64831], [64848, 64911], [64914, 64967],
1449        [65008, 65021], [65040, 65049], [65072, 65106], [65108, 65126],
1450        [65128, 65131], [65136, 65140], [65142, 65276], [65281, 65437],
1451        [65440, 65470], [65474, 65479], [65482, 65487], [65490, 65495],
1452        [65498, 65500], [65504, 65510], [65512, 65518], [65532, 65533],
1453        [65536, 65547], [65549, 65574], [65576, 65594], [65596, 65597],
1454        [65599, 65613], [65616, 65629], [65664, 65786], [65792, 65794],
1455        [65799, 65843], [65847, 65932], [65936, 65947], [65952, 65952],
1456        [66000, 66044], [66176, 66204], [66208, 66256], [66273, 66299],
1457        [66304, 66339], [66352, 66378], [66384, 66421], [66432, 66461],
1458        [66463, 66499], [66504, 66517], [66560, 66717], [66720, 66729],
1459        [66816, 66855], [66864, 66915], [66927, 66927], [67072, 67382],
1460        [67392, 67413], [67424, 67431], [67584, 67589], [67592, 67592],
1461        [67594, 67637], [67639, 67640], [67644, 67644], [67647, 67669],
1462        [67671, 67742], [67751, 67759], [67808, 67826], [67828, 67829],
1463        [67835, 67867], [67871, 67897], [67903, 67903], [67968, 68023],
1464        [68028, 68047], [68050, 68096], [68112, 68115], [68117, 68119],
1465        [68121, 68147], [68160, 68167], [68176, 68184], [68192, 68255],
1466        [68288, 68324], [68331, 68342], [68352, 68405], [68409, 68437],
1467        [68440, 68466], [68472, 68497], [68505, 68508], [68521, 68527],
1468        [68608, 68680], [68736, 68786], [68800, 68850], [68858, 68863],
1469        [69216, 69246], [69632, 69632], [69634, 69687], [69703, 69709],
1470        [69714, 69743], [69762, 69810], [69815, 69816], [69819, 69820],
1471        [69822, 69825], [69840, 69864], [69872, 69881], [69891, 69926],
1472        [69932, 69932], [69942, 69955], [69968, 70002], [70004, 70006],
1473        [70018, 70069], [70079, 70089], [70093, 70093], [70096, 70111],
1474        [70113, 70132], [70144, 70161], [70163, 70190], [70194, 70195],
1475        [70197, 70197], [70200, 70205], [70272, 70278], [70280, 70280],
1476        [70282, 70285], [70287, 70301], [70303, 70313], [70320, 70366],
1477        [70368, 70370], [70384, 70393], [70402, 70403], [70405, 70412],
1478        [70415, 70416], [70419, 70440], [70442, 70448], [70450, 70451],
1479        [70453, 70457], [70461, 70461], [70463, 70463], [70465, 70468],
1480        [70471, 70472], [70475, 70477], [70480, 70480], [70493, 70499],
1481        [70784, 70831], [70833, 70834], [70841, 70841], [70843, 70844],
1482        [70846, 70846], [70849, 70849], [70852, 70855], [70864, 70873],
1483        [71040, 71086], [71088, 71089], [71096, 71099], [71102, 71102],
1484        [71105, 71131], [71168, 71218], [71227, 71228], [71230, 71230],
1485        [71233, 71236], [71248, 71257], [71296, 71338], [71340, 71340],
1486        [71342, 71343], [71350, 71350], [71360, 71369], [71424, 71449],
1487        [71456, 71457], [71462, 71462], [71472, 71487], [71840, 71922],
1488        [71935, 71935], [72384, 72440], [73728, 74649], [74752, 74862],
1489        [74864, 74868], [74880, 75075], [77824, 78894], [82944, 83526],
1490        [92160, 92728], [92736, 92766], [92768, 92777], [92782, 92783],
1491        [92880, 92909], [92917, 92917], [92928, 92975], [92983, 92997],
1492        [93008, 93017], [93019, 93025], [93027, 93047], [93053, 93071],
1493        [93952, 94020], [94032, 94078], [94099, 94111], [110592, 110593],
1494        [113664, 113770], [113776, 113788], [113792, 113800],
1495        [113808, 113817], [113820, 113820], [113823, 113823],
1496        [118784, 119029], [119040, 119078], [119081, 119140],
1497        [119142, 119142], [119146, 119149], [119171, 119172],
1498        [119180, 119209], [119214, 119272], [119296, 119361],
1499        [119365, 119365], [119552, 119638], [119648, 119665],
1500        [119808, 119892], [119894, 119964], [119966, 119967],
1501        [119970, 119970], [119973, 119974], [119977, 119980],
1502        [119982, 119993], [119995, 119995], [119997, 120003],
1503        [120005, 120069], [120071, 120074], [120077, 120084],
1504        [120086, 120092], [120094, 120121], [120123, 120126],
1505        [120128, 120132], [120134, 120134], [120138, 120144],
1506        [120146, 120485], [120488, 120779], [120782, 121343],
1507        [121399, 121402], [121453, 121460], [121462, 121475],
1508        [121477, 121483], [124928, 125124], [125127, 125135],
1509        [126464, 126467], [126469, 126495], [126497, 126498],
1510        [126500, 126500], [126503, 126503], [126505, 126514],
1511        [126516, 126519], [126521, 126521], [126523, 126523],
1512        [126530, 126530], [126535, 126535], [126537, 126537],
1513        [126539, 126539], [126541, 126543], [126545, 126546],
1514        [126548, 126548], [126551, 126551], [126553, 126553],
1515        [126555, 126555], [126557, 126557], [126559, 126559],
1516        [126561, 126562], [126564, 126564], [126567, 126570],
1517        [126572, 126578], [126580, 126583], [126585, 126588],
1518        [126590, 126590], [126592, 126601], [126603, 126619],
1519        [126625, 126627], [126629, 126633], [126635, 126651],
1520        [126704, 126705], [126976, 127019], [127024, 127123],
1521        [127136, 127150], [127153, 127167], [127169, 127183],
1522        [127185, 127221], [127232, 127244], [127248, 127278],
1523        [127280, 127339], [127344, 127386], [127462, 127490],
1524        [127504, 127546], [127552, 127560], [127568, 127569],
1525        [127744, 128377], [128379, 128419], [128421, 128720],
1526        [128736, 128748], [128752, 128755], [128768, 128883],
1527        [128896, 128980], [129024, 129035], [129040, 129095],
1528        [129104, 129113], [129120, 129159], [129168, 129197],
1529        [129296, 129304], [129408, 129412], [129472, 129472],
1530        [131072, 173782], [173824, 177972], [177984, 178205],
1531        [178208, 183969], [194560, 195101]**/
1532        const UnicodeSet codepoint_set
1533            {{{Empty, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
1534              {Full, 18}, {Empty, 3}, {Mixed, 3}, {Full, 6}, {Mixed, 1},
1535              {Full, 4}, {Mixed, 8}, {Full, 1}, {Mixed, 2}, {Full, 2},
1536              {Mixed, 5}, {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 4},
1537              {Empty, 2}, {Mixed, 1}, {Empty, 2}, {Mixed, 43}, {Empty, 1},
1538              {Mixed, 3}, {Empty, 1}, {Mixed, 7}, {Empty, 1}, {Full, 1},
1539              {Mixed, 4}, {Full, 1}, {Mixed, 1}, {Full, 11}, {Mixed, 1},
1540              {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 1}, {Full, 1},
1541              {Mixed, 3}, {Full, 2}, {Mixed, 1}, {Full, 20}, {Mixed, 1},
1542              {Full, 2}, {Mixed, 5}, {Full, 1}, {Mixed, 4}, {Full, 2},
1543              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 5},
1544              {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 1},
1545              {Mixed, 4}, {Empty, 2}, {Mixed, 6}, {Full, 1}, {Mixed, 1},
1546              {Full, 1}, {Mixed, 2}, {Full, 1}, {Empty, 2}, {Mixed, 2},
1547              {Full, 6}, {Empty, 2}, {Full, 8}, {Mixed, 1}, {Full, 1},
1548              {Mixed, 2}, {Full, 1}, {Mixed, 5}, {Full, 1}, {Mixed, 3},
1549              {Empty, 2}, {Full, 4}, {Mixed, 1}, {Full, 18}, {Mixed, 1},
1550              {Full, 1}, {Mixed, 2}, {Full, 56}, {Mixed, 5}, {Full, 1},
1551              {Mixed, 2}, {Full, 4}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
1552              {Full, 1}, {Mixed, 4}, {Empty, 1}, {Full, 2}, {Mixed, 1},
1553              {Empty, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Full, 6},
1554              {Mixed, 2}, {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 1},
1555              {Full, 3}, {Mixed, 2}, {Full, 2}, {Mixed, 2}, {Full, 1},
1556              {Mixed, 2}, {Full, 6}, {Mixed, 1}, {Full, 213}, {Mixed, 1},
1557              {Full, 656}, {Mixed, 1}, {Empty, 1}, {Full, 36}, {Mixed, 1},
1558              {Full, 1}, {Mixed, 1}, {Full, 10}, {Mixed, 1}, {Full, 1},
1559              {Mixed, 2}, {Full, 2}, {Mixed, 1}, {Full, 5}, {Mixed, 1},
1560              {Empty, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 1}, {Full, 2},
1561              {Mixed, 2}, {Full, 1}, {Mixed, 7}, {Full, 1}, {Mixed, 3},
1562              {Full, 1}, {Mixed, 5}, {Full, 1}, {Mixed, 1}, {Full, 3},
1563              {Mixed, 1}, {Full, 349}, {Mixed, 3}, {Empty, 264}, {Full, 11},
1564              {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3},
1565              {Full, 3}, {Mixed, 1}, {Full, 11}, {Mixed, 1}, {Full, 1},
1566              {Mixed, 1}, {Full, 1}, {Mixed, 6}, {Full, 3}, {Mixed, 2},
1567              {Full, 3}, {Mixed, 7}, {Empty, 1}, {Full, 3}, {Mixed, 3},
1568              {Full, 2}, {Mixed, 4}, {Empty, 4}, {Mixed, 1}, {Full, 1},
1569              {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Full, 1}, {Mixed, 1},
1570              {Empty, 1}, {Full, 4}, {Mixed, 2}, {Empty, 2}, {Full, 1},
1571              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 4}, {Full, 9},
1572              {Mixed, 3}, {Empty, 4}, {Mixed, 3}, {Full, 1}, {Mixed, 2},
1573              {Empty, 1}, {Mixed, 3}, {Empty, 2}, {Full, 1}, {Mixed, 2},
1574              {Full, 1}, {Mixed, 3}, {Full, 2}, {Empty, 1}, {Full, 1},
1575              {Mixed, 1}, {Full, 1}, {Mixed, 5}, {Empty, 2}, {Full, 2},
1576              {Mixed, 1}, {Empty, 1}, {Full, 1}, {Mixed, 1}, {Full, 1},
1577              {Mixed, 1}, {Empty, 11}, {Mixed, 1}, {Empty, 12}, {Mixed, 18},
1578              {Empty, 2}, {Mixed, 8}, {Empty, 8}, {Full, 1}, {Mixed, 2},
1579              {Empty, 5}, {Full, 1}, {Mixed, 2}, {Empty, 1}, {Full, 1},
1580              {Mixed, 2}, {Empty, 1}, {Full, 1}, {Mixed, 2}, {Empty, 1},
1581              {Mixed, 2}, {Empty, 11}, {Full, 2}, {Mixed, 1}, {Empty, 14},
1582              {Full, 1}, {Mixed, 1}, {Empty, 40}, {Full, 28}, {Mixed, 1},
1583              {Empty, 3}, {Full, 3}, {Mixed, 1}, {Full, 6}, {Mixed, 1},
1584              {Empty, 85}, {Full, 33}, {Mixed, 1}, {Empty, 126}, {Full, 18},
1585              {Mixed, 1}, {Empty, 269}, {Full, 17}, {Mixed, 3}, {Empty, 2},
1586              {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Empty, 27}, {Full, 2},
1587              {Mixed, 3}, {Empty, 515}, {Mixed, 1}, {Empty, 95}, {Full, 3},
1588              {Mixed, 2}, {Empty, 155}, {Full, 7}, {Mixed, 1}, {Full, 1},
1589              {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
1590              {Full, 2}, {Mixed, 1}, {Empty, 5}, {Full, 2}, {Mixed, 2},
1591              {Empty, 4}, {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
1592              {Full, 1}, {Mixed, 3}, {Full, 10}, {Mixed, 1}, {Full, 8},
1593              {Mixed, 1}, {Full, 17}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
1594              {Mixed, 2}, {Empty, 107}, {Full, 6}, {Mixed, 1}, {Empty, 41},
1595              {Mixed, 6}, {Empty, 1}, {Mixed, 1}, {Empty, 8}, {Full, 1},
1596              {Mixed, 1}, {Full, 2}, {Mixed, 6}, {Full, 1}, {Mixed, 2},
1597              {Empty, 2}, {Mixed, 4}, {Empty, 5}, {Full, 19}, {Mixed, 1},
1598              {Full, 1}, {Mixed, 1}, {Full, 8}, {Mixed, 2}, {Full, 3},
1599              {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
1600              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Empty, 2},
1601              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
1602              {Empty, 49}, {Full, 1334}, {Mixed, 1}, {Empty, 1},
1603              {Full, 129}, {Mixed, 1}, {Full, 6}, {Mixed, 1}, {Full, 180},
1604              {Mixed, 1}, {Empty, 330}, {Full, 16}, {Mixed, 1},
1605              {Empty, 28719}},
1606             {0x7fffffff, 0xffffdfff, 0xfcff0000, 0xffffd7f0, 0xfffffffb,
1607              0xfffffc07, 0xfffeffff, 0xfe7fffff, 0xfffffffe, 0x0000e6ff,
1608              0x40000000, 0xffff0049, 0x001f07ff, 0xc800ffc0, 0x000007ff,
1609              0xfffeffff, 0x403fffff, 0xffffc260, 0xfffd3fff, 0x0000ffff,
1610              0xffffe000, 0x0002003f, 0x07f007ff, 0x043fffff, 0x7fff0110,
1611              0x41ffffff, 0x001fffff, 0xfffffff8, 0xebffffff, 0xff01de01,
1612              0xfffffff3, 0xfff99fed, 0xa3c5fdff, 0xb0005981, 0x0fffffc3,
1613              0xfff987e8, 0xc36dfdff, 0x5e000001, 0x001cffc0, 0xfffbbfe8,
1614              0xe3edfdff, 0x00011a01, 0x0203ffc3, 0xfff99fec, 0x23edfdff,
1615              0xb0001981, 0x00ffffc3, 0xd63dc7e8, 0x83ffc718, 0x00011dc6,
1616              0x07ffffc0, 0xfffddfee, 0x23fffdff, 0x0700001e, 0xff00ffc3,
1617              0xfffddfec, 0x63effdff, 0x40000d9b, 0x0006ffc3, 0xfffddfec,
1618              0xa7ffffff, 0x80005dc1, 0xfe3fffc3, 0xfc7fffec, 0x2ffbffff,
1619              0x7f03007f, 0x001cffc0, 0xfffffffe, 0x800dffff, 0x0fff807f,
1620              0xfef02596, 0x200decae, 0xf3ff005f, 0xfcffffff, 0xfd5fffff,
1621              0xfffffeff, 0x80001fff, 0x00001f20, 0xc0000000, 0x07ffdfbf,
1622              0x99021fff, 0x3cffffff, 0xffe1fffe, 0xdfffdf9b, 0xffff20bf,
1623              0x3d7f3dff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d, 0xff3dffff,
1624              0x07ffffff, 0x1fffffff, 0x03ffffff, 0x3f3fffff, 0x1fffffff,
1625              0x01ffffff, 0x0003dfff, 0x0063ffff, 0x0003ffff, 0x0001dfff,
1626              0xc04fffff, 0x1ff001bf, 0x03ff03ff, 0x03ff07ff, 0x00ffffff,
1627              0xffff05ff, 0x003fffff, 0x7fffffff, 0x01fb0e78, 0xfffffff1,
1628              0x001f3fff, 0xffff0fff, 0xc7ff03ff, 0xc67fffff, 0x00bfffff,
1629              0x0007e01a, 0x03ff03ff, 0x00003fff, 0xfffffff0, 0xe82fffff,
1630              0xffff0ffb, 0x1ff007ff, 0xfffffffc, 0xffffc4c3, 0xf00c5cbf,
1631              0xf8300fff, 0xffffe3ff, 0x000800ff, 0x006fde02, 0x3f3fffff,
1632              0xaaff3f3f, 0x3fffffff, 0xffdfffff, 0xefcfffdf, 0x7fdcffff,
1633              0xffff07ff, 0xffff80ff, 0xfff30000, 0x1fff7fff, 0x7fffffff,
1634              0xffff0fff, 0x07ffffff, 0x0000007f, 0x000007ff, 0xffcfffff,
1635              0xff3fffff, 0xe3ffffff, 0x0003fdff, 0x0000f000, 0xffff7fff,
1636              0x7fffffff, 0xfe0c7fff, 0xffff20bf, 0x000180ff, 0x007fffff,
1637              0x7f7f7f7f, 0x7f7f7f7f, 0x00000007, 0xfbffffff, 0x000fffff,
1638              0x003fffff, 0x0fff0000, 0xffff03ff, 0xfffffffe, 0xf87fffff,
1639              0xffffffe0, 0xfffe3fff, 0xffff7fff, 0x07ffffff, 0xffff000f,
1640              0x7fffffff, 0x7fffffff, 0x003fffff, 0x003fffff, 0xffff1fff,
1641              0xffff007f, 0x00000fff, 0xc0087fff, 0x3fffffff, 0x00fcffff,
1642              0x00ff3fff, 0xff800000, 0xfffff7bb, 0x03ff0f9f, 0x00ffffff,
1643              0x03ffc00f, 0x3ffc0000, 0xffffc03f, 0x800c007f, 0x1fffffff,
1644              0xfffffff8, 0xec37ffff, 0xc3ffbfff, 0x7fffffdf, 0x001981ff,
1645              0xf3ff2ff7, 0xefffffff, 0x3e62ffff, 0xf8000005, 0x003fcfff,
1646              0x007e7e7e, 0xffff7f7f, 0xffff003f, 0x03ff1edf, 0xffff000f,
1647              0xfffff87f, 0x0fffffff, 0xffff3fff, 0x03ffffff, 0xa0f8007f,
1648              0x5f7fffff, 0xffffffdb, 0xfff80003, 0xffff0000, 0xfffcffff,
1649              0x000000ff, 0x3fff0000, 0x03ff0000, 0xffff0000, 0xfff7ffff,
1650              0xffdf0f7f, 0x1fffffff, 0xfffffffe, 0x3fffffff, 0x7fffffff,
1651              0x1cfcfcfc, 0x30007f7f, 0xffffefff, 0xb7ffff7f, 0x3fff3fff,
1652              0x07ffffff, 0xffffff87, 0xff8fffff, 0x0fff1fff, 0x00000001,
1653              0xffff0000, 0x1fffffff, 0x1fffffff, 0x0001ffff, 0x0ffffffe,
1654              0xffff000f, 0xffff07ff, 0x003fffff, 0xbfffffff, 0x003fff0f,
1655              0x3fffffff, 0x000003ff, 0xffff00ff, 0x0000800f, 0x007fffff,
1656              0x003fffff, 0x000000ff, 0xfffffd3f, 0x91bfffff, 0xffbfffff,
1657              0x7fffffff, 0x0000ff80, 0xf837ffff, 0x8fffffff, 0x83ffffff,
1658              0xf0ffffff, 0xfffcffff, 0xfeef0001, 0x000fffff, 0x01ff00ff,
1659              0x007ff81f, 0xfe3fffff, 0xff3fffff, 0xff07ffff, 0x1e03ffff,
1660              0x0000fe00, 0x000001ff, 0x0007ffff, 0xfc07ffff, 0x7fffffff,
1661              0xfffffffd, 0x00ffffff, 0xfffc3f80, 0x0000ffff, 0xfffffffc,
1662              0xd987ffff, 0xffff0003, 0x03ff01ff, 0xfffffff8, 0xffc0107f,
1663              0xffff000f, 0x0077ffff, 0xfffffffc, 0x803fffff, 0xffff23ff,
1664              0x001ffffe, 0xfffbffff, 0x3f2c7fff, 0xbfffbd7f, 0xffff03ff,
1665              0x7fffffff, 0x03ff0007, 0xfff99fec, 0xa3edfdff, 0xe001399e,
1666              0x0000000f, 0x5a06ffff, 0x03ff00f2, 0x4f037fff, 0x0ffffffe,
1667              0x5807ffff, 0x03ff001e, 0x0040d7ff, 0x000003ff, 0x03ffffff,
1668              0xffff0043, 0x8007ffff, 0x01ffffff, 0x03ffffff, 0x001f7fff,
1669              0x0000000f, 0x00007fff, 0x0000007f, 0x01ffffff, 0x7fffffff,
1670              0x0000c3ff, 0xffff0000, 0x00203fff, 0xff80ffff, 0xfbff003f,
1671              0xe0fffffb, 0x0000ffff, 0xffff001f, 0x7fffffff, 0xfff80000,
1672              0x00000003, 0x1fff07ff, 0x93ff01ff, 0x003fffff, 0xfffffe7f,
1673              0x00003c5f, 0xfffff018, 0xffffc3ff, 0x000001ff, 0x00000023,
1674              0x007fffff, 0x0003ffff, 0xffdfffff, 0xdfffffff, 0xebffde64,
1675              0xffffffef, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffff3f,
1676              0xffffcfff, 0x07800000, 0xffdfe000, 0x00000fef, 0x0000ff9f,
1677              0xffffffef, 0x0af7fe96, 0xaa96ea84, 0x5ef7f796, 0x0ffffbff,
1678              0x0ffffbee, 0x00030000, 0xffff0fff, 0x000fffff, 0xfffe7fff,
1679              0xfffefffe, 0x003fffff, 0xffff1fff, 0xffff7fff, 0xffff0fff,
1680              0x07ffffff, 0xffffffc0, 0xffff0007, 0x07ffffff, 0x000301ff,
1681              0xfbffffff, 0xffffffef, 0x0001ffff, 0x000f1fff, 0x000fffff,
1682              0x001fffff, 0xffff0fff, 0x03ff00ff, 0xffff00ff, 0x00003fff,
1683              0x01ff0000, 0x0000001f, 0x00000001, 0x007fffff, 0x001fffff,
1684              0x3fffffff, 0x00000003, 0x3fffffff}};
1685        static BinaryPropertyObject property_object{Gr_Base, codepoint_set};
1686    }
1687    namespace GR_EXT_ns {
1688        /** Code Point Ranges for Gr_Ext
1689        [768, 879], [1155, 1161], [1425, 1469], [1471, 1471], [1473, 1474],
1690        [1476, 1477], [1479, 1479], [1552, 1562], [1611, 1631],
1691        [1648, 1648], [1750, 1756], [1759, 1764], [1767, 1768],
1692        [1770, 1773], [1809, 1809], [1840, 1866], [1958, 1968],
1693        [2027, 2035], [2070, 2073], [2075, 2083], [2085, 2087],
1694        [2089, 2093], [2137, 2139], [2275, 2306], [2362, 2362],
1695        [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2391],
1696        [2402, 2403], [2433, 2433], [2492, 2492], [2494, 2494],
1697        [2497, 2500], [2509, 2509], [2519, 2519], [2530, 2531],
1698        [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632],
1699        [2635, 2637], [2641, 2641], [2672, 2673], [2677, 2677],
1700        [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760],
1701        [2765, 2765], [2786, 2787], [2817, 2817], [2876, 2876],
1702        [2878, 2879], [2881, 2884], [2893, 2893], [2902, 2903],
1703        [2914, 2915], [2946, 2946], [3006, 3006], [3008, 3008],
1704        [3021, 3021], [3031, 3031], [3072, 3072], [3134, 3136],
1705        [3142, 3144], [3146, 3149], [3157, 3158], [3170, 3171],
1706        [3201, 3201], [3260, 3260], [3263, 3263], [3266, 3266],
1707        [3270, 3270], [3276, 3277], [3285, 3286], [3298, 3299],
1708        [3329, 3329], [3390, 3390], [3393, 3396], [3405, 3405],
1709        [3415, 3415], [3426, 3427], [3530, 3530], [3535, 3535],
1710        [3538, 3540], [3542, 3542], [3551, 3551], [3633, 3633],
1711        [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3769],
1712        [3771, 3772], [3784, 3789], [3864, 3865], [3893, 3893],
1713        [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972],
1714        [3974, 3975], [3981, 3991], [3993, 4028], [4038, 4038],
1715        [4141, 4144], [4146, 4151], [4153, 4154], [4157, 4158],
1716        [4184, 4185], [4190, 4192], [4209, 4212], [4226, 4226],
1717        [4229, 4230], [4237, 4237], [4253, 4253], [4957, 4959],
1718        [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003],
1719        [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099],
1720        [6109, 6109], [6155, 6157], [6313, 6313], [6432, 6434],
1721        [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680],
1722        [6683, 6683], [6742, 6742], [6744, 6750], [6752, 6752],
1723        [6754, 6754], [6757, 6764], [6771, 6780], [6783, 6783],
1724        [6832, 6846], [6912, 6915], [6964, 6964], [6966, 6970],
1725        [6972, 6972], [6978, 6978], [7019, 7027], [7040, 7041],
1726        [7074, 7077], [7080, 7081], [7083, 7085], [7142, 7142],
1727        [7144, 7145], [7149, 7149], [7151, 7153], [7212, 7219],
1728        [7222, 7223], [7376, 7378], [7380, 7392], [7394, 7400],
1729        [7405, 7405], [7412, 7412], [7416, 7417], [7616, 7669],
1730        [7676, 7679], [8204, 8205], [8400, 8432], [11503, 11505],
1731        [11647, 11647], [11744, 11775], [12330, 12335], [12441, 12442],
1732        [42607, 42610], [42612, 42621], [42654, 42655], [42736, 42737],
1733        [43010, 43010], [43014, 43014], [43019, 43019], [43045, 43046],
1734        [43204, 43204], [43232, 43249], [43302, 43309], [43335, 43345],
1735        [43392, 43394], [43443, 43443], [43446, 43449], [43452, 43452],
1736        [43493, 43493], [43561, 43566], [43569, 43570], [43573, 43574],
1737        [43587, 43587], [43596, 43596], [43644, 43644], [43696, 43696],
1738        [43698, 43700], [43703, 43704], [43710, 43711], [43713, 43713],
1739        [43756, 43757], [43766, 43766], [44005, 44005], [44008, 44008],
1740        [44013, 44013], [64286, 64286], [65024, 65039], [65056, 65071],
1741        [65438, 65439], [66045, 66045], [66272, 66272], [66422, 66426],
1742        [68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154],
1743        [68159, 68159], [68325, 68326], [69633, 69633], [69688, 69702],
1744        [69759, 69761], [69811, 69814], [69817, 69818], [69888, 69890],
1745        [69927, 69931], [69933, 69940], [70003, 70003], [70016, 70017],
1746        [70070, 70078], [70090, 70092], [70191, 70193], [70196, 70196],
1747        [70198, 70199], [70367, 70367], [70371, 70378], [70400, 70401],
1748        [70460, 70460], [70462, 70462], [70464, 70464], [70487, 70487],
1749        [70502, 70508], [70512, 70516], [70832, 70832], [70835, 70840],
1750        [70842, 70842], [70845, 70845], [70847, 70848], [70850, 70851],
1751        [71087, 71087], [71090, 71093], [71100, 71101], [71103, 71104],
1752        [71132, 71133], [71219, 71226], [71229, 71229], [71231, 71232],
1753        [71339, 71339], [71341, 71341], [71344, 71349], [71351, 71351],
1754        [71453, 71455], [71458, 71461], [71463, 71467], [92912, 92916],
1755        [92976, 92982], [94095, 94098], [113821, 113822], [119141, 119141],
1756        [119143, 119145], [119150, 119154], [119163, 119170],
1757        [119173, 119179], [119210, 119213], [119362, 119364],
1758        [121344, 121398], [121403, 121452], [121461, 121461],
1759        [121476, 121476], [121499, 121503], [121505, 121519],
1760        [125136, 125142], [917760, 917999]**/
1761        const UnicodeSet codepoint_set
1762            {{{Empty, 24}, {Full, 3}, {Mixed, 1}, {Empty, 8}, {Mixed, 1},
1763              {Empty, 7}, {Mixed, 3}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
1764              {Mixed, 2}, {Empty, 2}, {Mixed, 5}, {Empty, 2}, {Mixed, 1},
1765              {Empty, 1}, {Mixed, 4}, {Empty, 4}, {Mixed, 24}, {Empty, 1},
1766              {Mixed, 12}, {Empty, 2}, {Mixed, 1}, {Empty, 2}, {Mixed, 2},
1767              {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 1},
1768              {Mixed, 4}, {Empty, 2}, {Mixed, 4}, {Empty, 21}, {Mixed, 1},
1769              {Empty, 29}, {Mixed, 4}, {Empty, 1}, {Mixed, 2}, {Empty, 1},
1770              {Mixed, 1}, {Empty, 4}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
1771              {Empty, 6}, {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Empty, 1},
1772              {Mixed, 1}, {Empty, 2}, {Mixed, 6}, {Empty, 1}, {Mixed, 1},
1773              {Empty, 1}, {Mixed, 1}, {Empty, 4}, {Mixed, 2}, {Empty, 6},
1774              {Full, 1}, {Mixed, 1}, {Empty, 16}, {Mixed, 1}, {Empty, 5},
1775              {Mixed, 2}, {Empty, 95}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
1776              {Empty, 3}, {Full, 1}, {Empty, 17}, {Mixed, 1}, {Empty, 2},
1777              {Mixed, 1}, {Empty, 942}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
1778              {Empty, 8}, {Mixed, 2}, {Empty, 4}, {Mixed, 2}, {Empty, 1},
1779              {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 1},
1780              {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 3}, {Empty, 7},
1781              {Mixed, 1}, {Empty, 632}, {Mixed, 1}, {Empty, 23}, {Mixed, 2},
1782              {Empty, 10}, {Mixed, 1}, {Empty, 18}, {Mixed, 1}, {Empty, 7},
1783              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 52}, {Mixed, 2},
1784              {Empty, 5}, {Mixed, 1}, {Empty, 40}, {Mixed, 6}, {Empty, 2},
1785              {Mixed, 2}, {Empty, 1}, {Mixed, 4}, {Empty, 2}, {Mixed, 1},
1786              {Empty, 4}, {Mixed, 6}, {Empty, 9}, {Mixed, 2}, {Empty, 6},
1787              {Mixed, 2}, {Empty, 2}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
1788              {Empty, 2}, {Mixed, 2}, {Empty, 669}, {Mixed, 1}, {Empty, 1},
1789              {Mixed, 1}, {Empty, 34}, {Mixed, 1}, {Empty, 615}, {Mixed, 1},
1790              {Empty, 166}, {Mixed, 3}, {Empty, 4}, {Mixed, 1}, {Empty, 61},
1791              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 112},
1792              {Mixed, 1}, {Empty, 24769}, {Full, 7}, {Mixed, 1},
1793              {Empty, 6128}},
1794             {0x0000ffff, 0x000003f8, 0xfffe0000, 0xbfffffff, 0x000000b6,
1795              0x07ff0000, 0xfffff800, 0x00010000, 0x9fc00000, 0x00003d9f,
1796              0x00020000, 0xffff0000, 0x000007ff, 0x0001ffc0, 0x000ff800,
1797              0xfbc00000, 0x00003eef, 0x0e000000, 0xfffffff8, 0x00000007,
1798              0x14000000, 0x00fe21fe, 0x0000000c, 0x00000002, 0x50000000,
1799              0x0080201e, 0x0000000c, 0x00000006, 0x10000000, 0x00023986,
1800              0x00230000, 0x00000006, 0x10000000, 0x000021be, 0x0000000c,
1801              0x00000002, 0xd0000000, 0x00c0201e, 0x0000000c, 0x00000004,
1802              0x40000000, 0x00802001, 0x00000001, 0xc0000000, 0x00603dc1,
1803              0x0000000c, 0x00000002, 0x90000000, 0x00603044, 0x0000000c,
1804              0x00000002, 0x40000000, 0x0080201e, 0x0000000c, 0x805c8400,
1805              0x07f20000, 0x00007f80, 0x1bf20000, 0x00003f00, 0x03000000,
1806              0x02a00000, 0x7ffe0000, 0xfeffe0df, 0x1fffffff, 0x00000040,
1807              0x66fde000, 0xc3000000, 0x001e0001, 0x20002064, 0xe0000000,
1808              0x001c0000, 0x001c0000, 0x000c0000, 0x000c0000, 0x3fb00000,
1809              0x200ffe40, 0x00003800, 0x00000200, 0x0e040187, 0x09800000,
1810              0x7f400000, 0x9ff81fe5, 0x7fff0000, 0x0000000f, 0x17d00000,
1811              0x00000004, 0x000ff800, 0x00000003, 0x00003b3c, 0x0003a340,
1812              0x00cff000, 0xfff70000, 0x031021fd, 0xf03fffff, 0x00003000,
1813              0xffff0000, 0x0001ffff, 0x00038000, 0x80000000, 0x0000fc00,
1814              0x06000000, 0x3ff78000, 0xc0000000, 0x00030000, 0x00000844,
1815              0x00000060, 0x00000010, 0x0003ffff, 0x00003fc0, 0x0003ff80,
1816              0x00000007, 0x13c80000, 0x00000020, 0x00667e00, 0x00001008,
1817              0x10000000, 0xc19d0000, 0x00000002, 0x00403000, 0x00002120,
1818              0x40000000, 0x0000ffff, 0x0000ffff, 0xc0000000, 0x20000000,
1819              0x00000001, 0x07c00000, 0x0000f06e, 0x87000000, 0x00000060,
1820              0x00000002, 0xff000000, 0x0000007f, 0x80000000, 0x00000003,
1821              0x06780000, 0x00000007, 0x001fef80, 0x00080000, 0x00000003,
1822              0x7fc00000, 0x00001c00, 0x00d38000, 0x80000000, 0x000007f8,
1823              0x00000003, 0x50000000, 0x00800001, 0x001f1fc0, 0xa5f90000,
1824              0x0000000d, 0xb03c8000, 0x30000001, 0xa7f80000, 0x00000001,
1825              0x00bf2800, 0xe0000000, 0x00000fbc, 0x001f0000, 0x007f0000,
1826              0x00078000, 0x60000000, 0xf807c3a0, 0x00000fe7, 0x00003c00,
1827              0x0000001c, 0xf87fffff, 0x00201fff, 0xf8000010, 0x0000fffe,
1828              0x007f0000, 0x0000ffff}};
1829        static BinaryPropertyObject property_object{Gr_Ext, codepoint_set};
1830    }
1831    namespace GR_LINK_ns {
1832        /** Code Point Ranges for Gr_Link
1833        [2381, 2381], [2509, 2509], [2637, 2637], [2765, 2765],
1834        [2893, 2893], [3021, 3021], [3149, 3149], [3277, 3277],
1835        [3405, 3405], [3530, 3530], [3642, 3642], [3972, 3972],
1836        [4153, 4154], [5908, 5908], [5940, 5940], [6098, 6098],
1837        [6752, 6752], [6980, 6980], [7082, 7083], [7154, 7155],
1838        [11647, 11647], [43014, 43014], [43204, 43204], [43347, 43347],
1839        [43456, 43456], [43766, 43766], [44013, 44013], [68159, 68159],
1840        [69702, 69702], [69759, 69759], [69817, 69817], [69939, 69940],
1841        [70080, 70080], [70197, 70197], [70378, 70378], [70477, 70477],
1842        [70850, 70850], [71103, 71103], [71231, 71231], [71350, 71350],
1843        [71467, 71467]**/
1844        const UnicodeSet codepoint_set
1845            {{{Empty, 74}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3},
1846              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
1847              {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3},
1848              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
1849              {Empty, 2}, {Mixed, 1}, {Empty, 10}, {Mixed, 1}, {Empty, 4},
1850              {Mixed, 1}, {Empty, 54}, {Mixed, 2}, {Empty, 4}, {Mixed, 1},
1851              {Empty, 20}, {Mixed, 1}, {Empty, 6}, {Mixed, 1}, {Empty, 2},
1852              {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 139}, {Mixed, 1},
1853              {Empty, 980}, {Mixed, 1}, {Empty, 5}, {Mixed, 1}, {Empty, 3},
1854              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 8}, {Mixed, 1},
1855              {Empty, 7}, {Mixed, 1}, {Empty, 753}, {Mixed, 1}, {Empty, 48},
1856              {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
1857              {Empty, 4}, {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 5},
1858              {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 11}, {Mixed, 1},
1859              {Empty, 6}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3},
1860              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 32582}},
1861             {0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000,
1862              0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00000400,
1863              0x04000000, 0x00000010, 0x06000000, 0x00100000, 0x00100000,
1864              0x00040000, 0x00000001, 0x00000010, 0x00000c00, 0x000c0000,
1865              0x80000000, 0x00000040, 0x00000010, 0x00080000, 0x00000001,
1866              0x00400000, 0x00002000, 0x80000000, 0x00000040, 0x80000000,
1867              0x02000000, 0x00180000, 0x00000001, 0x00200000, 0x00000400,
1868              0x00002000, 0x00000004, 0x80000000, 0x80000000, 0x00400000,
1869              0x00000800}};
1870        static BinaryPropertyObject property_object{Gr_Link, codepoint_set};
1871    }
1872    namespace IDC_ns {
1873        /** Code Point Ranges for IDC
1874        [48, 57], [65, 90], [95, 95], [97, 122], [170, 170], [181, 181],
1875        [183, 183], [186, 186], [192, 214], [216, 246], [248, 705],
1876        [710, 721], [736, 740], [748, 748], [750, 750], [768, 884],
1877        [886, 887], [890, 893], [895, 895], [902, 906], [908, 908],
1878        [910, 929], [931, 1013], [1015, 1153], [1155, 1159], [1162, 1327],
1879        [1329, 1366], [1369, 1369], [1377, 1415], [1425, 1469],
1880        [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479],
1881        [1488, 1514], [1520, 1522], [1552, 1562], [1568, 1641],
1882        [1646, 1747], [1749, 1756], [1759, 1768], [1770, 1788],
1883        [1791, 1791], [1808, 1866], [1869, 1969], [1984, 2037],
1884        [2042, 2042], [2048, 2093], [2112, 2139], [2208, 2228],
1885        [2275, 2403], [2406, 2415], [2417, 2435], [2437, 2444],
1886        [2447, 2448], [2451, 2472], [2474, 2480], [2482, 2482],
1887        [2486, 2489], [2492, 2500], [2503, 2504], [2507, 2510],
1888        [2519, 2519], [2524, 2525], [2527, 2531], [2534, 2545],
1889        [2561, 2563], [2565, 2570], [2575, 2576], [2579, 2600],
1890        [2602, 2608], [2610, 2611], [2613, 2614], [2616, 2617],
1891        [2620, 2620], [2622, 2626], [2631, 2632], [2635, 2637],
1892        [2641, 2641], [2649, 2652], [2654, 2654], [2662, 2677],
1893        [2689, 2691], [2693, 2701], [2703, 2705], [2707, 2728],
1894        [2730, 2736], [2738, 2739], [2741, 2745], [2748, 2757],
1895        [2759, 2761], [2763, 2765], [2768, 2768], [2784, 2787],
1896        [2790, 2799], [2809, 2809], [2817, 2819], [2821, 2828],
1897        [2831, 2832], [2835, 2856], [2858, 2864], [2866, 2867],
1898        [2869, 2873], [2876, 2884], [2887, 2888], [2891, 2893],
1899        [2902, 2903], [2908, 2909], [2911, 2915], [2918, 2927],
1900        [2929, 2929], [2946, 2947], [2949, 2954], [2958, 2960],
1901        [2962, 2965], [2969, 2970], [2972, 2972], [2974, 2975],
1902        [2979, 2980], [2984, 2986], [2990, 3001], [3006, 3010],
1903        [3014, 3016], [3018, 3021], [3024, 3024], [3031, 3031],
1904        [3046, 3055], [3072, 3075], [3077, 3084], [3086, 3088],
1905        [3090, 3112], [3114, 3129], [3133, 3140], [3142, 3144],
1906        [3146, 3149], [3157, 3158], [3160, 3162], [3168, 3171],
1907        [3174, 3183], [3201, 3203], [3205, 3212], [3214, 3216],
1908        [3218, 3240], [3242, 3251], [3253, 3257], [3260, 3268],
1909        [3270, 3272], [3274, 3277], [3285, 3286], [3294, 3294],
1910        [3296, 3299], [3302, 3311], [3313, 3314], [3329, 3331],
1911        [3333, 3340], [3342, 3344], [3346, 3386], [3389, 3396],
1912        [3398, 3400], [3402, 3406], [3415, 3415], [3423, 3427],
1913        [3430, 3439], [3450, 3455], [3458, 3459], [3461, 3478],
1914        [3482, 3505], [3507, 3515], [3517, 3517], [3520, 3526],
1915        [3530, 3530], [3535, 3540], [3542, 3542], [3544, 3551],
1916        [3558, 3567], [3570, 3571], [3585, 3642], [3648, 3662],
1917        [3664, 3673], [3713, 3714], [3716, 3716], [3719, 3720],
1918        [3722, 3722], [3725, 3725], [3732, 3735], [3737, 3743],
1919        [3745, 3747], [3749, 3749], [3751, 3751], [3754, 3755],
1920        [3757, 3769], [3771, 3773], [3776, 3780], [3782, 3782],
1921        [3784, 3789], [3792, 3801], [3804, 3807], [3840, 3840],
1922        [3864, 3865], [3872, 3881], [3893, 3893], [3895, 3895],
1923        [3897, 3897], [3902, 3911], [3913, 3948], [3953, 3972],
1924        [3974, 3991], [3993, 4028], [4038, 4038], [4096, 4169],
1925        [4176, 4253], [4256, 4293], [4295, 4295], [4301, 4301],
1926        [4304, 4346], [4348, 4680], [4682, 4685], [4688, 4694],
1927        [4696, 4696], [4698, 4701], [4704, 4744], [4746, 4749],
1928        [4752, 4784], [4786, 4789], [4792, 4798], [4800, 4800],
1929        [4802, 4805], [4808, 4822], [4824, 4880], [4882, 4885],
1930        [4888, 4954], [4957, 4959], [4969, 4977], [4992, 5007],
1931        [5024, 5109], [5112, 5117], [5121, 5740], [5743, 5759],
1932        [5761, 5786], [5792, 5866], [5870, 5880], [5888, 5900],
1933        [5902, 5908], [5920, 5940], [5952, 5971], [5984, 5996],
1934        [5998, 6000], [6002, 6003], [6016, 6099], [6103, 6103],
1935        [6108, 6109], [6112, 6121], [6155, 6157], [6160, 6169],
1936        [6176, 6263], [6272, 6314], [6320, 6389], [6400, 6430],
1937        [6432, 6443], [6448, 6459], [6470, 6509], [6512, 6516],
1938        [6528, 6571], [6576, 6601], [6608, 6618], [6656, 6683],
1939        [6688, 6750], [6752, 6780], [6783, 6793], [6800, 6809],
1940        [6823, 6823], [6832, 6845], [6912, 6987], [6992, 7001],
1941        [7019, 7027], [7040, 7155], [7168, 7223], [7232, 7241],
1942        [7245, 7293], [7376, 7378], [7380, 7414], [7416, 7417],
1943        [7424, 7669], [7676, 7957], [7960, 7965], [7968, 8005],
1944        [8008, 8013], [8016, 8023], [8025, 8025], [8027, 8027],
1945        [8029, 8029], [8031, 8061], [8064, 8116], [8118, 8124],
1946        [8126, 8126], [8130, 8132], [8134, 8140], [8144, 8147],
1947        [8150, 8155], [8160, 8172], [8178, 8180], [8182, 8188],
1948        [8255, 8256], [8276, 8276], [8305, 8305], [8319, 8319],
1949        [8336, 8348], [8400, 8412], [8417, 8417], [8421, 8432],
1950        [8450, 8450], [8455, 8455], [8458, 8467], [8469, 8469],
1951        [8472, 8477], [8484, 8484], [8486, 8486], [8488, 8488],
1952        [8490, 8505], [8508, 8511], [8517, 8521], [8526, 8526],
1953        [8544, 8584], [11264, 11310], [11312, 11358], [11360, 11492],
1954        [11499, 11507], [11520, 11557], [11559, 11559], [11565, 11565],
1955        [11568, 11623], [11631, 11631], [11647, 11670], [11680, 11686],
1956        [11688, 11694], [11696, 11702], [11704, 11710], [11712, 11718],
1957        [11720, 11726], [11728, 11734], [11736, 11742], [11744, 11775],
1958        [12293, 12295], [12321, 12335], [12337, 12341], [12344, 12348],
1959        [12353, 12438], [12441, 12447], [12449, 12538], [12540, 12543],
1960        [12549, 12589], [12593, 12686], [12704, 12730], [12784, 12799],
1961        [13312, 19893], [19968, 40917], [40960, 42124], [42192, 42237],
1962        [42240, 42508], [42512, 42539], [42560, 42607], [42612, 42621],
1963        [42623, 42737], [42775, 42783], [42786, 42888], [42891, 42925],
1964        [42928, 42935], [42999, 43047], [43072, 43123], [43136, 43204],
1965        [43216, 43225], [43232, 43255], [43259, 43259], [43261, 43261],
1966        [43264, 43309], [43312, 43347], [43360, 43388], [43392, 43456],
1967        [43471, 43481], [43488, 43518], [43520, 43574], [43584, 43597],
1968        [43600, 43609], [43616, 43638], [43642, 43714], [43739, 43741],
1969        [43744, 43759], [43762, 43766], [43777, 43782], [43785, 43790],
1970        [43793, 43798], [43808, 43814], [43816, 43822], [43824, 43866],
1971        [43868, 43877], [43888, 44010], [44012, 44013], [44016, 44025],
1972        [44032, 55203], [55216, 55238], [55243, 55291], [63744, 64109],
1973        [64112, 64217], [64256, 64262], [64275, 64279], [64285, 64296],
1974        [64298, 64310], [64312, 64316], [64318, 64318], [64320, 64321],
1975        [64323, 64324], [64326, 64433], [64467, 64829], [64848, 64911],
1976        [64914, 64967], [65008, 65019], [65024, 65039], [65056, 65071],
1977        [65075, 65076], [65101, 65103], [65136, 65140], [65142, 65276],
1978        [65296, 65305], [65313, 65338], [65343, 65343], [65345, 65370],
1979        [65382, 65470], [65474, 65479], [65482, 65487], [65490, 65495],
1980        [65498, 65500], [65536, 65547], [65549, 65574], [65576, 65594],
1981        [65596, 65597], [65599, 65613], [65616, 65629], [65664, 65786],
1982        [65856, 65908], [66045, 66045], [66176, 66204], [66208, 66256],
1983        [66272, 66272], [66304, 66335], [66352, 66378], [66384, 66426],
1984        [66432, 66461], [66464, 66499], [66504, 66511], [66513, 66517],
1985        [66560, 66717], [66720, 66729], [66816, 66855], [66864, 66915],
1986        [67072, 67382], [67392, 67413], [67424, 67431], [67584, 67589],
1987        [67592, 67592], [67594, 67637], [67639, 67640], [67644, 67644],
1988        [67647, 67669], [67680, 67702], [67712, 67742], [67808, 67826],
1989        [67828, 67829], [67840, 67861], [67872, 67897], [67968, 68023],
1990        [68030, 68031], [68096, 68099], [68101, 68102], [68108, 68115],
1991        [68117, 68119], [68121, 68147], [68152, 68154], [68159, 68159],
1992        [68192, 68220], [68224, 68252], [68288, 68295], [68297, 68326],
1993        [68352, 68405], [68416, 68437], [68448, 68466], [68480, 68497],
1994        [68608, 68680], [68736, 68786], [68800, 68850], [69632, 69702],
1995        [69734, 69743], [69759, 69818], [69840, 69864], [69872, 69881],
1996        [69888, 69940], [69942, 69951], [69968, 70003], [70006, 70006],
1997        [70016, 70084], [70090, 70092], [70096, 70106], [70108, 70108],
1998        [70144, 70161], [70163, 70199], [70272, 70278], [70280, 70280],
1999        [70282, 70285], [70287, 70301], [70303, 70312], [70320, 70378],
2000        [70384, 70393], [70400, 70403], [70405, 70412], [70415, 70416],
2001        [70419, 70440], [70442, 70448], [70450, 70451], [70453, 70457],
2002        [70460, 70468], [70471, 70472], [70475, 70477], [70480, 70480],
2003        [70487, 70487], [70493, 70499], [70502, 70508], [70512, 70516],
2004        [70784, 70853], [70855, 70855], [70864, 70873], [71040, 71093],
2005        [71096, 71104], [71128, 71133], [71168, 71232], [71236, 71236],
2006        [71248, 71257], [71296, 71351], [71360, 71369], [71424, 71449],
2007        [71453, 71467], [71472, 71481], [71840, 71913], [71935, 71935],
2008        [72384, 72440], [73728, 74649], [74752, 74862], [74880, 75075],
2009        [77824, 78894], [82944, 83526], [92160, 92728], [92736, 92766],
2010        [92768, 92777], [92880, 92909], [92912, 92916], [92928, 92982],
2011        [92992, 92995], [93008, 93017], [93027, 93047], [93053, 93071],
2012        [93952, 94020], [94032, 94078], [94095, 94111], [110592, 110593],
2013        [113664, 113770], [113776, 113788], [113792, 113800],
2014        [113808, 113817], [113821, 113822], [119141, 119145],
2015        [119149, 119154], [119163, 119170], [119173, 119179],
2016        [119210, 119213], [119362, 119364], [119808, 119892],
2017        [119894, 119964], [119966, 119967], [119970, 119970],
2018        [119973, 119974], [119977, 119980], [119982, 119993],
2019        [119995, 119995], [119997, 120003], [120005, 120069],
2020        [120071, 120074], [120077, 120084], [120086, 120092],
2021        [120094, 120121], [120123, 120126], [120128, 120132],
2022        [120134, 120134], [120138, 120144], [120146, 120485],
2023        [120488, 120512], [120514, 120538], [120540, 120570],
2024        [120572, 120596], [120598, 120628], [120630, 120654],
2025        [120656, 120686], [120688, 120712], [120714, 120744],
2026        [120746, 120770], [120772, 120779], [120782, 120831],
2027        [121344, 121398], [121403, 121452], [121461, 121461],
2028        [121476, 121476], [121499, 121503], [121505, 121519],
2029        [124928, 125124], [125136, 125142], [126464, 126467],
2030        [126469, 126495], [126497, 126498], [126500, 126500],
2031        [126503, 126503], [126505, 126514], [126516, 126519],
2032        [126521, 126521], [126523, 126523], [126530, 126530],
2033        [126535, 126535], [126537, 126537], [126539, 126539],
2034        [126541, 126543], [126545, 126546], [126548, 126548],
2035        [126551, 126551], [126553, 126553], [126555, 126555],
2036        [126557, 126557], [126559, 126559], [126561, 126562],
2037        [126564, 126564], [126567, 126570], [126572, 126578],
2038        [126580, 126583], [126585, 126588], [126590, 126590],
2039        [126592, 126601], [126603, 126619], [126625, 126627],
2040        [126629, 126633], [126635, 126651], [131072, 173782],
2041        [173824, 177972], [177984, 178205], [178208, 183969],
2042        [194560, 195101], [917760, 917999]**/
2043        const UnicodeSet codepoint_set
2044            {{{Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 3}, {Full, 14},
2045              {Mixed, 2}, {Full, 3}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
2046              {Full, 4}, {Mixed, 1}, {Full, 4}, {Mixed, 8}, {Full, 2},
2047              {Mixed, 1}, {Full, 2}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
2048              {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 1},
2049              {Mixed, 2}, {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
2050              {Full, 3}, {Mixed, 40}, {Empty, 1}, {Mixed, 3}, {Empty, 1},
2051              {Mixed, 7}, {Empty, 1}, {Full, 2}, {Mixed, 1}, {Full, 1},
2052              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 10}, {Mixed, 1},
2053              {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 1}, {Full, 1},
2054              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Full, 18}, {Mixed, 2},
2055              {Full, 2}, {Mixed, 5}, {Full, 2}, {Mixed, 3}, {Full, 2},
2056              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 5},
2057              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Full, 1},
2058              {Mixed, 4}, {Empty, 2}, {Full, 2}, {Mixed, 2}, {Full, 3},
2059              {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 2}, {Mixed, 2},
2060              {Full, 7}, {Mixed, 1}, {Full, 8}, {Mixed, 1}, {Full, 1},
2061              {Mixed, 2}, {Full, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 4},
2062              {Empty, 1}, {Mixed, 5}, {Full, 1}, {Mixed, 1}, {Empty, 83},
2063              {Full, 1}, {Mixed, 2}, {Full, 4}, {Mixed, 1}, {Full, 1},
2064              {Mixed, 1}, {Full, 1}, {Mixed, 4}, {Full, 1}, {Empty, 16},
2065              {Mixed, 3}, {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 3},
2066              {Full, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 16},
2067              {Full, 205}, {Mixed, 1}, {Empty, 2}, {Full, 654}, {Mixed, 1},
2068              {Empty, 1}, {Full, 36}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
2069              {Full, 8}, {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 3},
2070              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 1},
2071              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 2},
2072              {Mixed, 2}, {Full, 1}, {Mixed, 3}, {Full, 2}, {Mixed, 2},
2073              {Full, 1}, {Mixed, 3}, {Full, 2}, {Mixed, 6}, {Full, 3},
2074              {Mixed, 1}, {Full, 349}, {Mixed, 3}, {Empty, 264}, {Full, 11},
2075              {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3},
2076              {Full, 2}, {Mixed, 2}, {Full, 10}, {Mixed, 2}, {Full, 1},
2077              {Mixed, 1}, {Full, 1}, {Mixed, 6}, {Full, 3}, {Mixed, 5},
2078              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Empty, 1},
2079              {Full, 3}, {Mixed, 1}, {Empty, 2}, {Full, 1}, {Mixed, 1},
2080              {Empty, 3}, {Mixed, 1}, {Empty, 4}, {Mixed, 1}, {Full, 1},
2081              {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Full, 1}, {Mixed, 1},
2082              {Empty, 1}, {Full, 4}, {Mixed, 2}, {Empty, 2}, {Full, 1},
2083              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 4}, {Full, 9},
2084              {Mixed, 3}, {Empty, 4}, {Mixed, 5}, {Empty, 2}, {Mixed, 3},
2085              {Empty, 2}, {Full, 1}, {Mixed, 1}, {Empty, 2}, {Mixed, 2},
2086              {Empty, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Full, 1},
2087              {Mixed, 4}, {Empty, 3}, {Full, 2}, {Mixed, 1}, {Empty, 1},
2088              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 24},
2089              {Full, 2}, {Mixed, 2}, {Full, 1}, {Mixed, 3}, {Full, 1},
2090              {Mixed, 3}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
2091              {Empty, 2}, {Mixed, 2}, {Full, 1}, {Mixed, 5}, {Empty, 8},
2092              {Full, 2}, {Mixed, 1}, {Empty, 5}, {Full, 1}, {Mixed, 2},
2093              {Empty, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Full, 1},
2094              {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 11}, {Full, 2},
2095              {Mixed, 1}, {Empty, 14}, {Full, 1}, {Mixed, 1}, {Empty, 40},
2096              {Full, 28}, {Mixed, 1}, {Empty, 3}, {Full, 3}, {Mixed, 1},
2097              {Full, 6}, {Mixed, 1}, {Empty, 85}, {Full, 33}, {Mixed, 1},
2098              {Empty, 126}, {Full, 18}, {Mixed, 1}, {Empty, 269},
2099              {Full, 17}, {Mixed, 3}, {Empty, 2}, {Mixed, 2}, {Full, 1},
2100              {Mixed, 4}, {Empty, 27}, {Full, 2}, {Mixed, 3}, {Empty, 515},
2101              {Mixed, 1}, {Empty, 95}, {Full, 3}, {Mixed, 2}, {Empty, 166},
2102              {Mixed, 3}, {Empty, 4}, {Mixed, 1}, {Empty, 13}, {Full, 2},
2103              {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 3},
2104              {Full, 10}, {Mixed, 10}, {Full, 1}, {Empty, 16}, {Full, 1},
2105              {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 106}, {Full, 6},
2106              {Mixed, 1}, {Empty, 41}, {Mixed, 6}, {Empty, 138},
2107              {Full, 1334}, {Mixed, 1}, {Empty, 1}, {Full, 129}, {Mixed, 1},
2108              {Full, 6}, {Mixed, 1}, {Full, 180}, {Mixed, 1}, {Empty, 330},
2109              {Full, 16}, {Mixed, 1}, {Empty, 22583}, {Full, 7}, {Mixed, 1},
2110              {Empty, 6128}},
2111             {0x03ff0000, 0x87fffffe, 0x07fffffe, 0x04a00400, 0xff7fffff,
2112              0xff7fffff, 0x0003ffc3, 0x0000501f, 0xbcdfffff, 0xffffd7c0,
2113              0xfffffffb, 0xffbfffff, 0xfffffcfb, 0xfffeffff, 0x027fffff,
2114              0xfffffffe, 0xfffe00ff, 0xbfffffff, 0xffff00b6, 0x000707ff,
2115              0x07ff0000, 0xffffc3ff, 0x9fefffff, 0x9ffffdff, 0xffff0000,
2116              0xffffe7ff, 0x0003ffff, 0x043fffff, 0x00003fff, 0x0fffffff,
2117              0x001fffff, 0xfffffff8, 0xfffeffcf, 0xfff99fef, 0xf3c5fdff,
2118              0xb080799f, 0x0003ffcf, 0xfff987ee, 0xd36dfdff, 0x5e023987,
2119              0x003fffc0, 0xfffbbfee, 0xf3edfdff, 0x00013bbf, 0x0200ffcf,
2120              0xfff99fee, 0xf3edfdff, 0xb0c0399f, 0x0002ffcf, 0xd63dc7ec,
2121              0xc3ffc718, 0x00813dc7, 0x0000ffc0, 0xfffddfef, 0xe3fffdff,
2122              0x07603ddf, 0x0000ffcf, 0xfffddfee, 0xf3effdff, 0x40603ddf,
2123              0x0006ffcf, 0xfffddfee, 0xe7ffffff, 0x80807ddf, 0xfc00ffcf,
2124              0xfc7fffec, 0x2ffbffff, 0xff5f847f, 0x000cffc0, 0xfffffffe,
2125              0x07ffffff, 0x03ff7fff, 0xfef02596, 0x3bffecae, 0xf3ff3f5f,
2126              0x03000001, 0xc2a003ff, 0xfffffeff, 0xfffe1fff, 0xfeffffdf,
2127              0x1fffffff, 0x00000040, 0xffff03ff, 0x3fffffff, 0xffff20bf,
2128              0xf7ffffff, 0x3d7f3dff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d,
2129              0xff3dffff, 0xe7ffffff, 0x0003fe00, 0x0000ffff, 0x3f3fffff,
2130              0xfffffffe, 0xffff9fff, 0x07fffffe, 0x01ffc7ff, 0x001fdfff,
2131              0x001fffff, 0x000fffff, 0x000ddfff, 0x308fffff, 0x000003ff,
2132              0x03ff3800, 0x00ffffff, 0xffff07ff, 0x003fffff, 0x7fffffff,
2133              0x0fff0fff, 0xffffffc0, 0x001f3fff, 0xffff0fff, 0x07ff03ff,
2134              0x0fffffff, 0x7fffffff, 0x9fffffff, 0x03ff03ff, 0x3fff0080,
2135              0x03ff0fff, 0x000ff800, 0x000fffff, 0x00ffffff, 0xffffe3ff,
2136              0x3fffffff, 0xfff70000, 0x037fffff, 0xf03fffff, 0x3f3fffff,
2137              0xaaff3f3f, 0x3fffffff, 0x5fdfffff, 0x0fcf1fdc, 0x1fdc1fff,
2138              0x80000000, 0x00100001, 0x80020000, 0x1fff0000, 0x1fff0000,
2139              0x0001ffe2, 0x3f2ffc84, 0xf3fffd50, 0x000043e0, 0x000001ff,
2140              0xffff7fff, 0x7fffffff, 0x000ff81f, 0xffff20bf, 0x800080ff,
2141              0x007fffff, 0x7f7f7f7f, 0x7f7f7f7f, 0x000000e0, 0x1f3efffe,
2142              0xfffffffe, 0xfe7fffff, 0xfffffffe, 0xf7ffffff, 0xffffffe0,
2143              0xfffe3fff, 0x00007fff, 0x07ffffff, 0xffff0000, 0x003fffff,
2144              0x003fffff, 0x00001fff, 0xffff0000, 0x3fffffff, 0xffff1fff,
2145              0x00000fff, 0xbff0ffff, 0x0003ffff, 0xff800000, 0xfffffffc,
2146              0xfffff9ff, 0x00ff3fff, 0xff800000, 0x000000ff, 0x000fffff,
2147              0x03ff001f, 0x28ffffff, 0xffff3fff, 0x000fffff, 0x1fffffff,
2148              0x03ff8001, 0x7fffffff, 0x007fffff, 0x03ff3fff, 0xfc7fffff,
2149              0x38000007, 0x007cffff, 0x007e7e7e, 0xffff7f7f, 0xf7ffffff,
2150              0xffff003f, 0x03ff37ff, 0xffff000f, 0xfffff87f, 0x0fffffff,
2151              0xffff3fff, 0x03ffffff, 0xe0f8007f, 0x5f7ffdff, 0xffffffdb,
2152              0x0003ffff, 0xfff80000, 0x3fffffff, 0xffff0000, 0xfffcffff,
2153              0x000000ff, 0x0fff0000, 0x0000ffff, 0x0018ffff, 0x0000e000,
2154              0xffdf0000, 0x1fffffff, 0x03ff0000, 0x87fffffe, 0x07fffffe,
2155              0xffffffc0, 0x7fffffff, 0x1cfcfcfc, 0xffffefff, 0xb7ffff7f,
2156              0x3fff3fff, 0x07ffffff, 0x001fffff, 0x20000000, 0x1fffffff,
2157              0x0001ffff, 0x00000001, 0xffff0000, 0xffff07ff, 0x07ffffff,
2158              0x3fffffff, 0x003eff0f, 0x3fffffff, 0x000003ff, 0xffff00ff,
2159              0x0000000f, 0x007fffff, 0x003fffff, 0x000000ff, 0xfffffd3f,
2160              0x91bfffff, 0x003fffff, 0x007fffff, 0x7fffffff, 0x0037ffff,
2161              0x003fffff, 0x03ffffff, 0xc0ffffff, 0xfeeff06f, 0x870fffff,
2162              0x1fffffff, 0x1fffffff, 0xfffffeff, 0x0000007f, 0x003fffff,
2163              0x003fffff, 0x0007ffff, 0x0003ffff, 0x000001ff, 0x0007ffff,
2164              0x0007ffff, 0x0000007f, 0x8000ffc0, 0x07ffffff, 0xffff0000,
2165              0x03ff01ff, 0xffdfffff, 0xffff0000, 0x004fffff, 0x17ff1c1f,
2166              0xfffbffff, 0x00ffffff, 0xbfffbd7f, 0xffff01ff, 0x03ff07ff,
2167              0xfff99fef, 0xf3edfdff, 0xe081399f, 0x001f1fcf, 0x03ff00bf,
2168              0xff3fffff, 0x3f000001, 0x03ff0011, 0x00ffffff, 0x000003ff,
2169              0xe3ffffff, 0x03ff0fff, 0x800003ff, 0x01ffffff, 0x03ffffff,
2170              0x00007fff, 0x0000000f, 0x00007fff, 0x0000007f, 0x01ffffff,
2171              0x7fffffff, 0x000003ff, 0xffff0000, 0x001f3fff, 0x007fffff,
2172              0x03ff000f, 0xe0fffff8, 0x0000ffff, 0xffff001f, 0x7fffffff,
2173              0xffff8000, 0x00000003, 0x1fff07ff, 0x63ff01ff, 0xf807e3e0,
2174              0x00000fe7, 0x00003c00, 0x0000001c, 0xffdfffff, 0xdfffffff,
2175              0xebffde64, 0xffffffef, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f,
2176              0xffffff3f, 0xf7fffffd, 0xf7ffffff, 0xffdfffff, 0xffdfffff,
2177              0xffff7fff, 0xffff7fff, 0xfffffdff, 0xfffffdff, 0xffffcff7,
2178              0xf87fffff, 0x00201fff, 0xf8000010, 0x0000fffe, 0x007f001f,
2179              0xffffffef, 0x0af7fe96, 0xaa96ea84, 0x5ef7f796, 0x0ffffbff,
2180              0x0ffffbee, 0x007fffff, 0x001fffff, 0x3fffffff, 0x00000003,
2181              0x3fffffff, 0x0000ffff}};
2182        static BinaryPropertyObject property_object{IDC, codepoint_set};
2183    }
2184    namespace IDS_ns {
2185        /** Code Point Ranges for IDS
2186        [65, 90], [97, 122], [170, 170], [181, 181], [186, 186], [192, 214],
2187        [216, 246], [248, 705], [710, 721], [736, 740], [748, 748],
2188        [750, 750], [880, 884], [886, 887], [890, 893], [895, 895],
2189        [902, 902], [904, 906], [908, 908], [910, 929], [931, 1013],
2190        [1015, 1153], [1162, 1327], [1329, 1366], [1369, 1369],
2191        [1377, 1415], [1488, 1514], [1520, 1522], [1568, 1610],
2192        [1646, 1647], [1649, 1747], [1749, 1749], [1765, 1766],
2193        [1774, 1775], [1786, 1788], [1791, 1791], [1808, 1808],
2194        [1810, 1839], [1869, 1957], [1969, 1969], [1994, 2026],
2195        [2036, 2037], [2042, 2042], [2048, 2069], [2074, 2074],
2196        [2084, 2084], [2088, 2088], [2112, 2136], [2208, 2228],
2197        [2308, 2361], [2365, 2365], [2384, 2384], [2392, 2401],
2198        [2417, 2432], [2437, 2444], [2447, 2448], [2451, 2472],
2199        [2474, 2480], [2482, 2482], [2486, 2489], [2493, 2493],
2200        [2510, 2510], [2524, 2525], [2527, 2529], [2544, 2545],
2201        [2565, 2570], [2575, 2576], [2579, 2600], [2602, 2608],
2202        [2610, 2611], [2613, 2614], [2616, 2617], [2649, 2652],
2203        [2654, 2654], [2674, 2676], [2693, 2701], [2703, 2705],
2204        [2707, 2728], [2730, 2736], [2738, 2739], [2741, 2745],
2205        [2749, 2749], [2768, 2768], [2784, 2785], [2809, 2809],
2206        [2821, 2828], [2831, 2832], [2835, 2856], [2858, 2864],
2207        [2866, 2867], [2869, 2873], [2877, 2877], [2908, 2909],
2208        [2911, 2913], [2929, 2929], [2947, 2947], [2949, 2954],
2209        [2958, 2960], [2962, 2965], [2969, 2970], [2972, 2972],
2210        [2974, 2975], [2979, 2980], [2984, 2986], [2990, 3001],
2211        [3024, 3024], [3077, 3084], [3086, 3088], [3090, 3112],
2212        [3114, 3129], [3133, 3133], [3160, 3162], [3168, 3169],
2213        [3205, 3212], [3214, 3216], [3218, 3240], [3242, 3251],
2214        [3253, 3257], [3261, 3261], [3294, 3294], [3296, 3297],
2215        [3313, 3314], [3333, 3340], [3342, 3344], [3346, 3386],
2216        [3389, 3389], [3406, 3406], [3423, 3425], [3450, 3455],
2217        [3461, 3478], [3482, 3505], [3507, 3515], [3517, 3517],
2218        [3520, 3526], [3585, 3632], [3634, 3635], [3648, 3654],
2219        [3713, 3714], [3716, 3716], [3719, 3720], [3722, 3722],
2220        [3725, 3725], [3732, 3735], [3737, 3743], [3745, 3747],
2221        [3749, 3749], [3751, 3751], [3754, 3755], [3757, 3760],
2222        [3762, 3763], [3773, 3773], [3776, 3780], [3782, 3782],
2223        [3804, 3807], [3840, 3840], [3904, 3911], [3913, 3948],
2224        [3976, 3980], [4096, 4138], [4159, 4159], [4176, 4181],
2225        [4186, 4189], [4193, 4193], [4197, 4198], [4206, 4208],
2226        [4213, 4225], [4238, 4238], [4256, 4293], [4295, 4295],
2227        [4301, 4301], [4304, 4346], [4348, 4680], [4682, 4685],
2228        [4688, 4694], [4696, 4696], [4698, 4701], [4704, 4744],
2229        [4746, 4749], [4752, 4784], [4786, 4789], [4792, 4798],
2230        [4800, 4800], [4802, 4805], [4808, 4822], [4824, 4880],
2231        [4882, 4885], [4888, 4954], [4992, 5007], [5024, 5109],
2232        [5112, 5117], [5121, 5740], [5743, 5759], [5761, 5786],
2233        [5792, 5866], [5870, 5880], [5888, 5900], [5902, 5905],
2234        [5920, 5937], [5952, 5969], [5984, 5996], [5998, 6000],
2235        [6016, 6067], [6103, 6103], [6108, 6108], [6176, 6263],
2236        [6272, 6312], [6314, 6314], [6320, 6389], [6400, 6430],
2237        [6480, 6509], [6512, 6516], [6528, 6571], [6576, 6601],
2238        [6656, 6678], [6688, 6740], [6823, 6823], [6917, 6963],
2239        [6981, 6987], [7043, 7072], [7086, 7087], [7098, 7141],
2240        [7168, 7203], [7245, 7247], [7258, 7293], [7401, 7404],
2241        [7406, 7409], [7413, 7414], [7424, 7615], [7680, 7957],
2242        [7960, 7965], [7968, 8005], [8008, 8013], [8016, 8023],
2243        [8025, 8025], [8027, 8027], [8029, 8029], [8031, 8061],
2244        [8064, 8116], [8118, 8124], [8126, 8126], [8130, 8132],
2245        [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172],
2246        [8178, 8180], [8182, 8188], [8305, 8305], [8319, 8319],
2247        [8336, 8348], [8450, 8450], [8455, 8455], [8458, 8467],
2248        [8469, 8469], [8472, 8477], [8484, 8484], [8486, 8486],
2249        [8488, 8488], [8490, 8505], [8508, 8511], [8517, 8521],
2250        [8526, 8526], [8544, 8584], [11264, 11310], [11312, 11358],
2251        [11360, 11492], [11499, 11502], [11506, 11507], [11520, 11557],
2252        [11559, 11559], [11565, 11565], [11568, 11623], [11631, 11631],
2253        [11648, 11670], [11680, 11686], [11688, 11694], [11696, 11702],
2254        [11704, 11710], [11712, 11718], [11720, 11726], [11728, 11734],
2255        [11736, 11742], [12293, 12295], [12321, 12329], [12337, 12341],
2256        [12344, 12348], [12353, 12438], [12443, 12447], [12449, 12538],
2257        [12540, 12543], [12549, 12589], [12593, 12686], [12704, 12730],
2258        [12784, 12799], [13312, 19893], [19968, 40917], [40960, 42124],
2259        [42192, 42237], [42240, 42508], [42512, 42527], [42538, 42539],
2260        [42560, 42606], [42623, 42653], [42656, 42735], [42775, 42783],
2261        [42786, 42888], [42891, 42925], [42928, 42935], [42999, 43009],
2262        [43011, 43013], [43015, 43018], [43020, 43042], [43072, 43123],
2263        [43138, 43187], [43250, 43255], [43259, 43259], [43261, 43261],
2264        [43274, 43301], [43312, 43334], [43360, 43388], [43396, 43442],
2265        [43471, 43471], [43488, 43492], [43494, 43503], [43514, 43518],
2266        [43520, 43560], [43584, 43586], [43588, 43595], [43616, 43638],
2267        [43642, 43642], [43646, 43695], [43697, 43697], [43701, 43702],
2268        [43705, 43709], [43712, 43712], [43714, 43714], [43739, 43741],
2269        [43744, 43754], [43762, 43764], [43777, 43782], [43785, 43790],
2270        [43793, 43798], [43808, 43814], [43816, 43822], [43824, 43866],
2271        [43868, 43877], [43888, 44002], [44032, 55203], [55216, 55238],
2272        [55243, 55291], [63744, 64109], [64112, 64217], [64256, 64262],
2273        [64275, 64279], [64285, 64285], [64287, 64296], [64298, 64310],
2274        [64312, 64316], [64318, 64318], [64320, 64321], [64323, 64324],
2275        [64326, 64433], [64467, 64829], [64848, 64911], [64914, 64967],
2276        [65008, 65019], [65136, 65140], [65142, 65276], [65313, 65338],
2277        [65345, 65370], [65382, 65470], [65474, 65479], [65482, 65487],
2278        [65490, 65495], [65498, 65500], [65536, 65547], [65549, 65574],
2279        [65576, 65594], [65596, 65597], [65599, 65613], [65616, 65629],
2280        [65664, 65786], [65856, 65908], [66176, 66204], [66208, 66256],
2281        [66304, 66335], [66352, 66378], [66384, 66421], [66432, 66461],
2282        [66464, 66499], [66504, 66511], [66513, 66517], [66560, 66717],
2283        [66816, 66855], [66864, 66915], [67072, 67382], [67392, 67413],
2284        [67424, 67431], [67584, 67589], [67592, 67592], [67594, 67637],
2285        [67639, 67640], [67644, 67644], [67647, 67669], [67680, 67702],
2286        [67712, 67742], [67808, 67826], [67828, 67829], [67840, 67861],
2287        [67872, 67897], [67968, 68023], [68030, 68031], [68096, 68096],
2288        [68112, 68115], [68117, 68119], [68121, 68147], [68192, 68220],
2289        [68224, 68252], [68288, 68295], [68297, 68324], [68352, 68405],
2290        [68416, 68437], [68448, 68466], [68480, 68497], [68608, 68680],
2291        [68736, 68786], [68800, 68850], [69635, 69687], [69763, 69807],
2292        [69840, 69864], [69891, 69926], [69968, 70002], [70006, 70006],
2293        [70019, 70066], [70081, 70084], [70106, 70106], [70108, 70108],
2294        [70144, 70161], [70163, 70187], [70272, 70278], [70280, 70280],
2295        [70282, 70285], [70287, 70301], [70303, 70312], [70320, 70366],
2296        [70405, 70412], [70415, 70416], [70419, 70440], [70442, 70448],
2297        [70450, 70451], [70453, 70457], [70461, 70461], [70480, 70480],
2298        [70493, 70497], [70784, 70831], [70852, 70853], [70855, 70855],
2299        [71040, 71086], [71128, 71131], [71168, 71215], [71236, 71236],
2300        [71296, 71338], [71424, 71449], [71840, 71903], [71935, 71935],
2301        [72384, 72440], [73728, 74649], [74752, 74862], [74880, 75075],
2302        [77824, 78894], [82944, 83526], [92160, 92728], [92736, 92766],
2303        [92880, 92909], [92928, 92975], [92992, 92995], [93027, 93047],
2304        [93053, 93071], [93952, 94020], [94032, 94032], [94099, 94111],
2305        [110592, 110593], [113664, 113770], [113776, 113788],
2306        [113792, 113800], [113808, 113817], [119808, 119892],
2307        [119894, 119964], [119966, 119967], [119970, 119970],
2308        [119973, 119974], [119977, 119980], [119982, 119993],
2309        [119995, 119995], [119997, 120003], [120005, 120069],
2310        [120071, 120074], [120077, 120084], [120086, 120092],
2311        [120094, 120121], [120123, 120126], [120128, 120132],
2312        [120134, 120134], [120138, 120144], [120146, 120485],
2313        [120488, 120512], [120514, 120538], [120540, 120570],
2314        [120572, 120596], [120598, 120628], [120630, 120654],
2315        [120656, 120686], [120688, 120712], [120714, 120744],
2316        [120746, 120770], [120772, 120779], [124928, 125124],
2317        [126464, 126467], [126469, 126495], [126497, 126498],
2318        [126500, 126500], [126503, 126503], [126505, 126514],
2319        [126516, 126519], [126521, 126521], [126523, 126523],
2320        [126530, 126530], [126535, 126535], [126537, 126537],
2321        [126539, 126539], [126541, 126543], [126545, 126546],
2322        [126548, 126548], [126551, 126551], [126553, 126553],
2323        [126555, 126555], [126557, 126557], [126559, 126559],
2324        [126561, 126562], [126564, 126564], [126567, 126570],
2325        [126572, 126578], [126580, 126583], [126585, 126588],
2326        [126590, 126590], [126592, 126601], [126603, 126619],
2327        [126625, 126627], [126629, 126633], [126635, 126651],
2328        [131072, 173782], [173824, 177972], [177984, 178205],
2329        [178208, 183969], [194560, 195101]**/
2330        const UnicodeSet codepoint_set
2331            {{{Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Full, 14},
2332              {Mixed, 2}, {Empty, 3}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
2333              {Full, 4}, {Mixed, 1}, {Full, 4}, {Mixed, 4}, {Empty, 1},
2334              {Mixed, 2}, {Empty, 1}, {Full, 1}, {Mixed, 2}, {Full, 2},
2335              {Mixed, 5}, {Full, 2}, {Mixed, 6}, {Empty, 2}, {Mixed, 1},
2336              {Empty, 2}, {Mixed, 23}, {Empty, 1}, {Mixed, 15}, {Empty, 1},
2337              {Mixed, 3}, {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 1},
2338              {Empty, 1}, {Mixed, 3}, {Empty, 3}, {Full, 1}, {Mixed, 4},
2339              {Full, 1}, {Mixed, 2}, {Full, 10}, {Mixed, 1}, {Full, 1},
2340              {Mixed, 3}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
2341              {Empty, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 2}, {Full, 18},
2342              {Mixed, 2}, {Full, 2}, {Mixed, 5}, {Full, 1}, {Mixed, 2},
2343              {Empty, 2}, {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
2344              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Full, 1},
2345              {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
2346              {Empty, 2}, {Mixed, 1}, {Empty, 2}, {Mixed, 3}, {Empty, 1},
2347              {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
2348              {Empty, 3}, {Mixed, 1}, {Full, 6}, {Empty, 2}, {Full, 8},
2349              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 3},
2350              {Empty, 3}, {Mixed, 2}, {Empty, 3}, {Mixed, 3}, {Full, 1},
2351              {Mixed, 1}, {Empty, 83}, {Full, 1}, {Mixed, 2}, {Full, 4},
2352              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 4},
2353              {Empty, 17}, {Mixed, 3}, {Full, 1}, {Mixed, 2}, {Full, 1},
2354              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 1},
2355              {Empty, 16}, {Full, 205}, {Mixed, 1}, {Empty, 2}, {Full, 654},
2356              {Mixed, 1}, {Empty, 1}, {Full, 36}, {Mixed, 1}, {Empty, 1},
2357              {Mixed, 2}, {Full, 8}, {Mixed, 2}, {Full, 1}, {Mixed, 2},
2358              {Full, 2}, {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Empty, 1},
2359              {Mixed, 3}, {Full, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 9},
2360              {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 7}, {Full, 3},
2361              {Mixed, 1}, {Full, 349}, {Mixed, 3}, {Empty, 264}, {Full, 11},
2362              {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3},
2363              {Full, 2}, {Mixed, 2}, {Full, 10}, {Mixed, 2}, {Full, 1},
2364              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Empty, 3}, {Mixed, 1},
2365              {Full, 3}, {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Full, 1},
2366              {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Full, 3},
2367              {Mixed, 1}, {Empty, 2}, {Full, 1}, {Mixed, 1}, {Empty, 8},
2368              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 1}, {Full, 1},
2369              {Mixed, 4}, {Full, 1}, {Mixed, 1}, {Empty, 1}, {Full, 4},
2370              {Mixed, 1}, {Empty, 3}, {Full, 1}, {Mixed, 1}, {Full, 1},
2371              {Mixed, 1}, {Empty, 4}, {Full, 9}, {Mixed, 3}, {Empty, 4},
2372              {Mixed, 5}, {Empty, 2}, {Mixed, 3}, {Empty, 2}, {Full, 1},
2373              {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
2374              {Empty, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Empty, 3},
2375              {Full, 2}, {Mixed, 1}, {Empty, 1}, {Full, 1}, {Mixed, 1},
2376              {Full, 1}, {Mixed, 1}, {Empty, 24}, {Mixed, 2}, {Empty, 2},
2377              {Mixed, 11}, {Empty, 1}, {Mixed, 2}, {Empty, 2}, {Mixed, 3},
2378              {Empty, 1}, {Mixed, 4}, {Empty, 8}, {Full, 1}, {Mixed, 2},
2379              {Empty, 5}, {Full, 1}, {Mixed, 2}, {Empty, 1}, {Full, 1},
2380              {Mixed, 2}, {Empty, 1}, {Full, 1}, {Mixed, 1}, {Empty, 2},
2381              {Mixed, 1}, {Empty, 12}, {Full, 2}, {Mixed, 1}, {Empty, 14},
2382              {Full, 1}, {Mixed, 1}, {Empty, 40}, {Full, 28}, {Mixed, 1},
2383              {Empty, 3}, {Full, 3}, {Mixed, 1}, {Full, 6}, {Mixed, 1},
2384              {Empty, 85}, {Full, 33}, {Mixed, 1}, {Empty, 126}, {Full, 18},
2385              {Mixed, 1}, {Empty, 269}, {Full, 17}, {Mixed, 2}, {Empty, 3},
2386              {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Empty, 27}, {Full, 2},
2387              {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 515}, {Mixed, 1},
2388              {Empty, 95}, {Full, 3}, {Mixed, 2}, {Empty, 187}, {Full, 2},
2389              {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 3},
2390              {Full, 10}, {Mixed, 10}, {Empty, 129}, {Full, 6}, {Mixed, 1},
2391              {Empty, 41}, {Mixed, 6}, {Empty, 138}, {Full, 1334},
2392              {Mixed, 1}, {Empty, 1}, {Full, 129}, {Mixed, 1}, {Full, 6},
2393              {Mixed, 1}, {Full, 180}, {Mixed, 1}, {Empty, 330}, {Full, 16},
2394              {Mixed, 1}, {Empty, 28719}},
2395             {0x07fffffe, 0x07fffffe, 0x04200400, 0xff7fffff, 0xff7fffff,
2396              0x0003ffc3, 0x0000501f, 0xbcdf0000, 0xffffd740, 0xfffffffb,
2397              0xffbfffff, 0xfffffc03, 0xfffeffff, 0x027fffff, 0xfffffffe,
2398              0x000000ff, 0xffff0000, 0x000707ff, 0x000007ff, 0xfffec000,
2399              0x002fffff, 0x9c00c060, 0xfffd0000, 0x0000ffff, 0xffffe000,
2400              0x0002003f, 0xfffffc00, 0x043007ff, 0x043fffff, 0x00000110,
2401              0x01ffffff, 0x001fffff, 0xfffffff0, 0x23ffffff, 0xff010000,
2402              0xfffe0003, 0xfff99fe1, 0x23c5fdff, 0xb0004000, 0x00030003,
2403              0xfff987e0, 0x036dfdff, 0x5e000000, 0x001c0000, 0xfffbbfe0,
2404              0x23edfdff, 0x00010000, 0x02000003, 0xfff99fe0, 0x23edfdff,
2405              0xb0000000, 0x00020003, 0xd63dc7e8, 0x03ffc718, 0x00010000,
2406              0xfffddfe0, 0x23fffdff, 0x07000000, 0x00000003, 0xfffddfe0,
2407              0x23effdff, 0x40000000, 0x00060003, 0xfffddfe0, 0x27ffffff,
2408              0x80004000, 0xfc000003, 0xfc7fffe0, 0x2ffbffff, 0x0000007f,
2409              0xfffffffe, 0x000dffff, 0x0000007f, 0xfef02596, 0x200decae,
2410              0xf000005f, 0x00000001, 0xfffffeff, 0x00001fff, 0x00001f00,
2411              0x800007ff, 0x3c3f0000, 0xffe1c062, 0x00004003, 0xffff20bf,
2412              0xf7ffffff, 0x3d7f3dff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d,
2413              0xff3dffff, 0x07ffffff, 0x0000ffff, 0x3f3fffff, 0xfffffffe,
2414              0xffff9fff, 0x07fffffe, 0x01ffc7ff, 0x0003dfff, 0x0003ffff,
2415              0x0003ffff, 0x0001dfff, 0x000fffff, 0x10800000, 0x00ffffff,
2416              0xffff05ff, 0x003fffff, 0x7fffffff, 0xffff0000, 0x001f3fff,
2417              0xffff0fff, 0x000003ff, 0x007fffff, 0x001fffff, 0x00000080,
2418              0xffffffe0, 0x000fffff, 0x00000fe0, 0xfffffff8, 0xfc00c001,
2419              0x0000003f, 0x0000000f, 0xfc00e000, 0x3fffffff, 0x0063de00,
2420              0x3f3fffff, 0xaaff3f3f, 0x3fffffff, 0x5fdfffff, 0x0fcf1fdc,
2421              0x1fdc1fff, 0x80020000, 0x1fff0000, 0x3f2ffc84, 0xf3fffd50,
2422              0x000043e0, 0x000001ff, 0xffff7fff, 0x7fffffff, 0x000c781f,
2423              0xffff20bf, 0x000080ff, 0x007fffff, 0x7f7f7f7f, 0x7f7f7f7f,
2424              0x000000e0, 0x1f3e03fe, 0xfffffffe, 0xf87fffff, 0xfffffffe,
2425              0xf7ffffff, 0xffffffe0, 0xfffe3fff, 0x00007fff, 0x07ffffff,
2426              0xffff0000, 0x003fffff, 0x003fffff, 0x00001fff, 0xffff0000,
2427              0x3fffffff, 0xffff1fff, 0x00000c00, 0x80007fff, 0x3fffffff,
2428              0x0000ffff, 0xff800000, 0xfffffffc, 0xfffff9ff, 0x00ff3fff,
2429              0xff800000, 0xfffff7bb, 0x00000007, 0x000fffff, 0xfffffffc,
2430              0x000fffff, 0x28fc0000, 0xfffffc00, 0xffff003f, 0x0000007f,
2431              0x1fffffff, 0xfffffff0, 0x0007ffff, 0x00008000, 0x7c00ffdf,
2432              0x000001ff, 0x00000ff7, 0xc47fffff, 0x3e62ffff, 0x38000005,
2433              0x001c07ff, 0x007e7e7e, 0xffff7f7f, 0xf7ffffff, 0xffff003f,
2434              0x00000007, 0xffff000f, 0xfffff87f, 0x0fffffff, 0xffff3fff,
2435              0x03ffffff, 0xa0f8007f, 0x5f7ffdff, 0xffffffdb, 0x0003ffff,
2436              0xfff80000, 0x3fffffff, 0xffff0000, 0xfffcffff, 0x000000ff,
2437              0x0fff0000, 0xffdf0000, 0x1fffffff, 0x07fffffe, 0x07fffffe,
2438              0xffffffc0, 0x7fffffff, 0x1cfcfcfc, 0xffffefff, 0xb7ffff7f,
2439              0x3fff3fff, 0x07ffffff, 0x001fffff, 0x1fffffff, 0x0001ffff,
2440              0xffff0000, 0xffff07ff, 0x003fffff, 0x3fffffff, 0x003eff0f,
2441              0x3fffffff, 0xffff00ff, 0x0000000f, 0x007fffff, 0x003fffff,
2442              0x000000ff, 0xfffffd3f, 0x91bfffff, 0x003fffff, 0x007fffff,
2443              0x7fffffff, 0x0037ffff, 0x003fffff, 0x03ffffff, 0xc0ffffff,
2444              0xfeef0001, 0x000fffff, 0x1fffffff, 0x1fffffff, 0xfffffeff,
2445              0x0000001f, 0x003fffff, 0x003fffff, 0x0007ffff, 0x0003ffff,
2446              0x000001ff, 0x0007ffff, 0x0007ffff, 0xfffffff8, 0x00ffffff,
2447              0xfffffff8, 0x0000ffff, 0xffff0000, 0x000001ff, 0xfffffff8,
2448              0x0000007f, 0xffff0000, 0x0047ffff, 0xfffffff8, 0x0007ffff,
2449              0x1400001e, 0xfffbffff, 0x00000fff, 0xbfffbd7f, 0xffff01ff,
2450              0x7fffffff, 0xfff99fe0, 0x23edfdff, 0xe0010000, 0x00000003,
2451              0x0000ffff, 0x000000b0, 0x00007fff, 0x0f000000, 0x0000ffff,
2452              0x00000010, 0x000007ff, 0x03ffffff, 0x80000000, 0x01ffffff,
2453              0x03ffffff, 0x00007fff, 0x0000000f, 0x00007fff, 0x0000007f,
2454              0x01ffffff, 0x7fffffff, 0xffff0000, 0x00003fff, 0x0000ffff,
2455              0x0000000f, 0xe0fffff8, 0x0000ffff, 0x0001001f, 0xfff80000,
2456              0x00000003, 0x1fff07ff, 0x03ff01ff, 0xffdfffff, 0xdfffffff,
2457              0xebffde64, 0xffffffef, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f,
2458              0xffffff3f, 0xf7fffffd, 0xf7ffffff, 0xffdfffff, 0xffdfffff,
2459              0xffff7fff, 0xffff7fff, 0xfffffdff, 0xfffffdff, 0x00000ff7,
2460              0x0000001f, 0xffffffef, 0x0af7fe96, 0xaa96ea84, 0x5ef7f796,
2461              0x0ffffbff, 0x0ffffbee, 0x007fffff, 0x001fffff, 0x3fffffff,
2462              0x00000003, 0x3fffffff}};
2463        static BinaryPropertyObject property_object{IDS, codepoint_set};
2464    }
2465    namespace LOWER_ns {
2466        /** Code Point Ranges for Lower
2467        [97, 122], [170, 170], [181, 181], [186, 186], [223, 246],
2468        [248, 255], [257, 257], [259, 259], [261, 261], [263, 263],
2469        [265, 265], [267, 267], [269, 269], [271, 271], [273, 273],
2470        [275, 275], [277, 277], [279, 279], [281, 281], [283, 283],
2471        [285, 285], [287, 287], [289, 289], [291, 291], [293, 293],
2472        [295, 295], [297, 297], [299, 299], [301, 301], [303, 303],
2473        [305, 305], [307, 307], [309, 309], [311, 312], [314, 314],
2474        [316, 316], [318, 318], [320, 320], [322, 322], [324, 324],
2475        [326, 326], [328, 329], [331, 331], [333, 333], [335, 335],
2476        [337, 337], [339, 339], [341, 341], [343, 343], [345, 345],
2477        [347, 347], [349, 349], [351, 351], [353, 353], [355, 355],
2478        [357, 357], [359, 359], [361, 361], [363, 363], [365, 365],
2479        [367, 367], [369, 369], [371, 371], [373, 373], [375, 375],
2480        [378, 378], [380, 380], [382, 384], [387, 387], [389, 389],
2481        [392, 392], [396, 397], [402, 402], [405, 405], [409, 411],
2482        [414, 414], [417, 417], [419, 419], [421, 421], [424, 424],
2483        [426, 427], [429, 429], [432, 432], [436, 436], [438, 438],
2484        [441, 442], [445, 447], [454, 454], [457, 457], [460, 460],
2485        [462, 462], [464, 464], [466, 466], [468, 468], [470, 470],
2486        [472, 472], [474, 474], [476, 477], [479, 479], [481, 481],
2487        [483, 483], [485, 485], [487, 487], [489, 489], [491, 491],
2488        [493, 493], [495, 496], [499, 499], [501, 501], [505, 505],
2489        [507, 507], [509, 509], [511, 511], [513, 513], [515, 515],
2490        [517, 517], [519, 519], [521, 521], [523, 523], [525, 525],
2491        [527, 527], [529, 529], [531, 531], [533, 533], [535, 535],
2492        [537, 537], [539, 539], [541, 541], [543, 543], [545, 545],
2493        [547, 547], [549, 549], [551, 551], [553, 553], [555, 555],
2494        [557, 557], [559, 559], [561, 561], [563, 569], [572, 572],
2495        [575, 576], [578, 578], [583, 583], [585, 585], [587, 587],
2496        [589, 589], [591, 659], [661, 696], [704, 705], [736, 740],
2497        [837, 837], [881, 881], [883, 883], [887, 887], [890, 893],
2498        [912, 912], [940, 974], [976, 977], [981, 983], [985, 985],
2499        [987, 987], [989, 989], [991, 991], [993, 993], [995, 995],
2500        [997, 997], [999, 999], [1001, 1001], [1003, 1003], [1005, 1005],
2501        [1007, 1011], [1013, 1013], [1016, 1016], [1019, 1020],
2502        [1072, 1119], [1121, 1121], [1123, 1123], [1125, 1125],
2503        [1127, 1127], [1129, 1129], [1131, 1131], [1133, 1133],
2504        [1135, 1135], [1137, 1137], [1139, 1139], [1141, 1141],
2505        [1143, 1143], [1145, 1145], [1147, 1147], [1149, 1149],
2506        [1151, 1151], [1153, 1153], [1163, 1163], [1165, 1165],
2507        [1167, 1167], [1169, 1169], [1171, 1171], [1173, 1173],
2508        [1175, 1175], [1177, 1177], [1179, 1179], [1181, 1181],
2509        [1183, 1183], [1185, 1185], [1187, 1187], [1189, 1189],
2510        [1191, 1191], [1193, 1193], [1195, 1195], [1197, 1197],
2511        [1199, 1199], [1201, 1201], [1203, 1203], [1205, 1205],
2512        [1207, 1207], [1209, 1209], [1211, 1211], [1213, 1213],
2513        [1215, 1215], [1218, 1218], [1220, 1220], [1222, 1222],
2514        [1224, 1224], [1226, 1226], [1228, 1228], [1230, 1231],
2515        [1233, 1233], [1235, 1235], [1237, 1237], [1239, 1239],
2516        [1241, 1241], [1243, 1243], [1245, 1245], [1247, 1247],
2517        [1249, 1249], [1251, 1251], [1253, 1253], [1255, 1255],
2518        [1257, 1257], [1259, 1259], [1261, 1261], [1263, 1263],
2519        [1265, 1265], [1267, 1267], [1269, 1269], [1271, 1271],
2520        [1273, 1273], [1275, 1275], [1277, 1277], [1279, 1279],
2521        [1281, 1281], [1283, 1283], [1285, 1285], [1287, 1287],
2522        [1289, 1289], [1291, 1291], [1293, 1293], [1295, 1295],
2523        [1297, 1297], [1299, 1299], [1301, 1301], [1303, 1303],
2524        [1305, 1305], [1307, 1307], [1309, 1309], [1311, 1311],
2525        [1313, 1313], [1315, 1315], [1317, 1317], [1319, 1319],
2526        [1321, 1321], [1323, 1323], [1325, 1325], [1327, 1327],
2527        [1377, 1415], [5112, 5117], [7424, 7615], [7681, 7681],
2528        [7683, 7683], [7685, 7685], [7687, 7687], [7689, 7689],
2529        [7691, 7691], [7693, 7693], [7695, 7695], [7697, 7697],
2530        [7699, 7699], [7701, 7701], [7703, 7703], [7705, 7705],
2531        [7707, 7707], [7709, 7709], [7711, 7711], [7713, 7713],
2532        [7715, 7715], [7717, 7717], [7719, 7719], [7721, 7721],
2533        [7723, 7723], [7725, 7725], [7727, 7727], [7729, 7729],
2534        [7731, 7731], [7733, 7733], [7735, 7735], [7737, 7737],
2535        [7739, 7739], [7741, 7741], [7743, 7743], [7745, 7745],
2536        [7747, 7747], [7749, 7749], [7751, 7751], [7753, 7753],
2537        [7755, 7755], [7757, 7757], [7759, 7759], [7761, 7761],
2538        [7763, 7763], [7765, 7765], [7767, 7767], [7769, 7769],
2539        [7771, 7771], [7773, 7773], [7775, 7775], [7777, 7777],
2540        [7779, 7779], [7781, 7781], [7783, 7783], [7785, 7785],
2541        [7787, 7787], [7789, 7789], [7791, 7791], [7793, 7793],
2542        [7795, 7795], [7797, 7797], [7799, 7799], [7801, 7801],
2543        [7803, 7803], [7805, 7805], [7807, 7807], [7809, 7809],
2544        [7811, 7811], [7813, 7813], [7815, 7815], [7817, 7817],
2545        [7819, 7819], [7821, 7821], [7823, 7823], [7825, 7825],
2546        [7827, 7827], [7829, 7837], [7839, 7839], [7841, 7841],
2547        [7843, 7843], [7845, 7845], [7847, 7847], [7849, 7849],
2548        [7851, 7851], [7853, 7853], [7855, 7855], [7857, 7857],
2549        [7859, 7859], [7861, 7861], [7863, 7863], [7865, 7865],
2550        [7867, 7867], [7869, 7869], [7871, 7871], [7873, 7873],
2551        [7875, 7875], [7877, 7877], [7879, 7879], [7881, 7881],
2552        [7883, 7883], [7885, 7885], [7887, 7887], [7889, 7889],
2553        [7891, 7891], [7893, 7893], [7895, 7895], [7897, 7897],
2554        [7899, 7899], [7901, 7901], [7903, 7903], [7905, 7905],
2555        [7907, 7907], [7909, 7909], [7911, 7911], [7913, 7913],
2556        [7915, 7915], [7917, 7917], [7919, 7919], [7921, 7921],
2557        [7923, 7923], [7925, 7925], [7927, 7927], [7929, 7929],
2558        [7931, 7931], [7933, 7933], [7935, 7943], [7952, 7957],
2559        [7968, 7975], [7984, 7991], [8000, 8005], [8016, 8023],
2560        [8032, 8039], [8048, 8061], [8064, 8071], [8080, 8087],
2561        [8096, 8103], [8112, 8116], [8118, 8119], [8126, 8126],
2562        [8130, 8132], [8134, 8135], [8144, 8147], [8150, 8151],
2563        [8160, 8167], [8178, 8180], [8182, 8183], [8305, 8305],
2564        [8319, 8319], [8336, 8348], [8458, 8458], [8462, 8463],
2565        [8467, 8467], [8495, 8495], [8500, 8500], [8505, 8505],
2566        [8508, 8509], [8518, 8521], [8526, 8526], [8560, 8575],
2567        [8580, 8580], [9424, 9449], [11312, 11358], [11361, 11361],
2568        [11365, 11366], [11368, 11368], [11370, 11370], [11372, 11372],
2569        [11377, 11377], [11379, 11380], [11382, 11389], [11393, 11393],
2570        [11395, 11395], [11397, 11397], [11399, 11399], [11401, 11401],
2571        [11403, 11403], [11405, 11405], [11407, 11407], [11409, 11409],
2572        [11411, 11411], [11413, 11413], [11415, 11415], [11417, 11417],
2573        [11419, 11419], [11421, 11421], [11423, 11423], [11425, 11425],
2574        [11427, 11427], [11429, 11429], [11431, 11431], [11433, 11433],
2575        [11435, 11435], [11437, 11437], [11439, 11439], [11441, 11441],
2576        [11443, 11443], [11445, 11445], [11447, 11447], [11449, 11449],
2577        [11451, 11451], [11453, 11453], [11455, 11455], [11457, 11457],
2578        [11459, 11459], [11461, 11461], [11463, 11463], [11465, 11465],
2579        [11467, 11467], [11469, 11469], [11471, 11471], [11473, 11473],
2580        [11475, 11475], [11477, 11477], [11479, 11479], [11481, 11481],
2581        [11483, 11483], [11485, 11485], [11487, 11487], [11489, 11489],
2582        [11491, 11492], [11500, 11500], [11502, 11502], [11507, 11507],
2583        [11520, 11557], [11559, 11559], [11565, 11565], [42561, 42561],
2584        [42563, 42563], [42565, 42565], [42567, 42567], [42569, 42569],
2585        [42571, 42571], [42573, 42573], [42575, 42575], [42577, 42577],
2586        [42579, 42579], [42581, 42581], [42583, 42583], [42585, 42585],
2587        [42587, 42587], [42589, 42589], [42591, 42591], [42593, 42593],
2588        [42595, 42595], [42597, 42597], [42599, 42599], [42601, 42601],
2589        [42603, 42603], [42605, 42605], [42625, 42625], [42627, 42627],
2590        [42629, 42629], [42631, 42631], [42633, 42633], [42635, 42635],
2591        [42637, 42637], [42639, 42639], [42641, 42641], [42643, 42643],
2592        [42645, 42645], [42647, 42647], [42649, 42649], [42651, 42653],
2593        [42787, 42787], [42789, 42789], [42791, 42791], [42793, 42793],
2594        [42795, 42795], [42797, 42797], [42799, 42801], [42803, 42803],
2595        [42805, 42805], [42807, 42807], [42809, 42809], [42811, 42811],
2596        [42813, 42813], [42815, 42815], [42817, 42817], [42819, 42819],
2597        [42821, 42821], [42823, 42823], [42825, 42825], [42827, 42827],
2598        [42829, 42829], [42831, 42831], [42833, 42833], [42835, 42835],
2599        [42837, 42837], [42839, 42839], [42841, 42841], [42843, 42843],
2600        [42845, 42845], [42847, 42847], [42849, 42849], [42851, 42851],
2601        [42853, 42853], [42855, 42855], [42857, 42857], [42859, 42859],
2602        [42861, 42861], [42863, 42872], [42874, 42874], [42876, 42876],
2603        [42879, 42879], [42881, 42881], [42883, 42883], [42885, 42885],
2604        [42887, 42887], [42892, 42892], [42894, 42894], [42897, 42897],
2605        [42899, 42901], [42903, 42903], [42905, 42905], [42907, 42907],
2606        [42909, 42909], [42911, 42911], [42913, 42913], [42915, 42915],
2607        [42917, 42917], [42919, 42919], [42921, 42921], [42933, 42933],
2608        [42935, 42935], [43000, 43002], [43824, 43866], [43868, 43877],
2609        [43888, 43967], [64256, 64262], [64275, 64279], [65345, 65370],
2610        [66600, 66639], [68800, 68850], [71872, 71903], [119834, 119859],
2611        [119886, 119892], [119894, 119911], [119938, 119963],
2612        [119990, 119993], [119995, 119995], [119997, 120003],
2613        [120005, 120015], [120042, 120067], [120094, 120119],
2614        [120146, 120171], [120198, 120223], [120250, 120275],
2615        [120302, 120327], [120354, 120379], [120406, 120431],
2616        [120458, 120485], [120514, 120538], [120540, 120545],
2617        [120572, 120596], [120598, 120603], [120630, 120654],
2618        [120656, 120661], [120688, 120712], [120714, 120719],
2619        [120746, 120770], [120772, 120777], [120779, 120779]**/
2620        const UnicodeSet codepoint_set
2621            {{{Empty, 3}, {Mixed, 1}, {Empty, 1}, {Mixed, 14}, {Full, 1},
2622              {Mixed, 4}, {Empty, 2}, {Mixed, 6}, {Empty, 1}, {Mixed, 1},
2623              {Full, 1}, {Mixed, 7}, {Empty, 1}, {Mixed, 2}, {Empty, 114},
2624              {Mixed, 1}, {Empty, 72}, {Full, 6}, {Empty, 2}, {Mixed, 16},
2625              {Empty, 3}, {Mixed, 2}, {Empty, 3}, {Mixed, 5}, {Empty, 25},
2626              {Mixed, 2}, {Empty, 57}, {Mixed, 7}, {Full, 1}, {Mixed, 1},
2627              {Empty, 968}, {Mixed, 3}, {Empty, 4}, {Mixed, 5}, {Empty, 1},
2628              {Mixed, 1}, {Empty, 25}, {Mixed, 3}, {Full, 2}, {Empty, 634},
2629              {Mixed, 1}, {Empty, 33}, {Mixed, 1}, {Empty, 38}, {Mixed, 2},
2630              {Empty, 67}, {Full, 1}, {Mixed, 1}, {Empty, 94}, {Full, 1},
2631              {Empty, 1497}, {Mixed, 31}, {Empty, 31041}},
2632             {0x07fffffe, 0x04200400, 0x80000000, 0xff7fffff, 0xaaaaaaaa,
2633              0x55aaaaaa, 0xaaaaab55, 0xd4aaaaaa, 0x4e243129, 0xe6512d2a,
2634              0xb5555240, 0xaa29aaaa, 0xaaaaaaaa, 0x93faaaaa, 0xffffaa85,
2635              0xffefffff, 0x01ffffff, 0x00000003, 0x0000001f, 0x00000020,
2636              0x3c8a0000, 0x00010000, 0xfffff000, 0xaae37fff, 0x192faaaa,
2637              0xffff0000, 0xaaaaaaaa, 0xaaaaa802, 0xaaaaaaaa, 0xaaaad554,
2638              0xaaaaaaaa, 0xaaaaaaaa, 0x0000aaaa, 0xfffffffe, 0x000000ff,
2639              0x3f000000, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
2640              0xbfeaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x003f00ff,
2641              0x00ff00ff, 0x00ff003f, 0x3fff00ff, 0x00ff00ff, 0x40df00ff,
2642              0x00cf00dc, 0x00dc00ff, 0x80020000, 0x1fff0000, 0x0008c400,
2643              0x32108000, 0x000043c0, 0xffff0000, 0x00000010, 0xffff0000,
2644              0x000003ff, 0xffff0000, 0x7fffffff, 0x3fda1562, 0xaaaaaaaa,
2645              0xaaaaaaaa, 0xaaaaaaaa, 0x0008501a, 0x000020bf, 0xaaaaaaaa,
2646              0x00002aaa, 0x3aaaaaaa, 0xaaabaaa8, 0xaaaaaaaa, 0x95ffaaaa,
2647              0xaaba50aa, 0x00a002aa, 0x07000000, 0xffff0000, 0xf7ffffff,
2648              0xffff003f, 0x00f8007f, 0x07fffffe, 0xffffff00, 0x0000ffff,
2649              0x0007ffff, 0xfc000000, 0x000fffff, 0xffdfc000, 0x000000ff,
2650              0x0ffffffc, 0xebc00000, 0x0000ffef, 0xfffffc00, 0xc000000f,
2651              0x00ffffff, 0xfffc0000, 0x00000fff, 0xffffffc0, 0xfc000000,
2652              0x000fffff, 0xffffc000, 0x000000ff, 0x0ffffffc, 0xffc00000,
2653              0x0000ffff, 0xfffffc00, 0x0000003f, 0xf7fffffc, 0xf0000003,
2654              0x0fdfffff, 0xffc00000, 0x003f7fff, 0xffff0000, 0x0000fdff,
2655              0xfffffc00, 0x00000bf7}};
2656        static BinaryPropertyObject property_object{Lower, codepoint_set};
2657    }
2658    namespace MATH_ns {
2659        /** Code Point Ranges for Math
2660        [43, 43], [60, 62], [94, 94], [124, 124], [126, 126], [172, 172],
2661        [177, 177], [215, 215], [247, 247], [976, 978], [981, 981],
2662        [1008, 1009], [1012, 1014], [1542, 1544], [8214, 8214],
2663        [8242, 8244], [8256, 8256], [8260, 8260], [8274, 8274],
2664        [8289, 8292], [8314, 8318], [8330, 8334], [8400, 8412],
2665        [8417, 8417], [8421, 8422], [8427, 8431], [8450, 8450],
2666        [8455, 8455], [8458, 8467], [8469, 8469], [8472, 8477],
2667        [8484, 8484], [8488, 8489], [8492, 8493], [8495, 8497],
2668        [8499, 8504], [8508, 8521], [8523, 8523], [8592, 8615],
2669        [8617, 8622], [8624, 8625], [8630, 8631], [8636, 8667],
2670        [8669, 8669], [8676, 8677], [8692, 8959], [8968, 8971],
2671        [8992, 8993], [9084, 9084], [9115, 9141], [9143, 9143],
2672        [9168, 9168], [9180, 9186], [9632, 9633], [9646, 9655],
2673        [9660, 9665], [9670, 9671], [9674, 9675], [9679, 9683],
2674        [9698, 9698], [9700, 9700], [9703, 9708], [9720, 9727],
2675        [9733, 9734], [9792, 9792], [9794, 9794], [9824, 9827],
2676        [9837, 9839], [10176, 10239], [10496, 11007], [11056, 11076],
2677        [11079, 11084], [64297, 64297], [65121, 65126], [65128, 65128],
2678        [65291, 65291], [65308, 65310], [65340, 65340], [65342, 65342],
2679        [65372, 65372], [65374, 65374], [65506, 65506], [65513, 65516],
2680        [119808, 119892], [119894, 119964], [119966, 119967],
2681        [119970, 119970], [119973, 119974], [119977, 119980],
2682        [119982, 119993], [119995, 119995], [119997, 120003],
2683        [120005, 120069], [120071, 120074], [120077, 120084],
2684        [120086, 120092], [120094, 120121], [120123, 120126],
2685        [120128, 120132], [120134, 120134], [120138, 120144],
2686        [120146, 120485], [120488, 120779], [120782, 120831],
2687        [126464, 126467], [126469, 126495], [126497, 126498],
2688        [126500, 126500], [126503, 126503], [126505, 126514],
2689        [126516, 126519], [126521, 126521], [126523, 126523],
2690        [126530, 126530], [126535, 126535], [126537, 126537],
2691        [126539, 126539], [126541, 126543], [126545, 126546],
2692        [126548, 126548], [126551, 126551], [126553, 126553],
2693        [126555, 126555], [126557, 126557], [126559, 126559],
2694        [126561, 126562], [126564, 126564], [126567, 126570],
2695        [126572, 126578], [126580, 126583], [126585, 126588],
2696        [126590, 126590], [126592, 126601], [126603, 126619],
2697        [126625, 126627], [126629, 126633], [126635, 126651],
2698        [126704, 126705]**/
2699        const UnicodeSet codepoint_set
2700            {{{Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 3}, {Empty, 22},
2701              {Mixed, 2}, {Empty, 16}, {Mixed, 1}, {Empty, 207}, {Mixed, 5},
2702              {Empty, 1}, {Mixed, 5}, {Empty, 1}, {Mixed, 4}, {Full, 8},
2703              {Mixed, 2}, {Empty, 1}, {Mixed, 5}, {Empty, 13}, {Mixed, 4},
2704              {Empty, 1}, {Mixed, 2}, {Empty, 10}, {Full, 2}, {Empty, 8},
2705              {Full, 16}, {Empty, 1}, {Mixed, 2}, {Empty, 1662}, {Mixed, 1},
2706              {Empty, 25}, {Mixed, 1}, {Empty, 4}, {Mixed, 3}, {Empty, 4},
2707              {Mixed, 1}, {Empty, 1696}, {Full, 2}, {Mixed, 1}, {Full, 1},
2708              {Mixed, 3}, {Full, 1}, {Mixed, 3}, {Full, 10}, {Mixed, 1},
2709              {Full, 8}, {Mixed, 1}, {Full, 1}, {Empty, 176}, {Mixed, 6},
2710              {Empty, 1}, {Mixed, 1}, {Empty, 30856}},
2711             {0x70000800, 0x40000000, 0x50000000, 0x00021000, 0x00800000,
2712              0x00800000, 0x00270000, 0x00730000, 0x000001c0, 0x00400000,
2713              0x001c0000, 0x00040011, 0x7c00001e, 0x00007c00, 0x1fff0000,
2714              0x0000f862, 0x3f2ffc84, 0xf1fbb310, 0x00000bff, 0xffff0000,
2715              0xf0c37eff, 0x2fffffff, 0xfff00030, 0x00000f00, 0x00000003,
2716              0x10000000, 0xf8000000, 0x00bfffff, 0xf0010000, 0x00000007,
2717              0xf0ffc003, 0x000f8cc3, 0xff001f94, 0x00000060, 0x00000005,
2718              0x0000e00f, 0xffff0000, 0x00001f9f, 0x00000200, 0x0000017e,
2719              0x70000800, 0x50000000, 0x50000000, 0x00001e04, 0xffdfffff,
2720              0xdfffffff, 0xebffde64, 0xffffffef, 0xdfdfe7bf, 0x7bffffff,
2721              0xfffdfc5f, 0xffffff3f, 0xffffcfff, 0xffffffef, 0x0af7fe96,
2722              0xaa96ea84, 0x5ef7f796, 0x0ffffbff, 0x0ffffbee, 0x00030000}};
2723        static BinaryPropertyObject property_object{Math, codepoint_set};
2724    }
2725    namespace UPPER_ns {
2726        /** Code Point Ranges for Upper
2727        [65, 90], [192, 214], [216, 222], [256, 256], [258, 258],
2728        [260, 260], [262, 262], [264, 264], [266, 266], [268, 268],
2729        [270, 270], [272, 272], [274, 274], [276, 276], [278, 278],
2730        [280, 280], [282, 282], [284, 284], [286, 286], [288, 288],
2731        [290, 290], [292, 292], [294, 294], [296, 296], [298, 298],
2732        [300, 300], [302, 302], [304, 304], [306, 306], [308, 308],
2733        [310, 310], [313, 313], [315, 315], [317, 317], [319, 319],
2734        [321, 321], [323, 323], [325, 325], [327, 327], [330, 330],
2735        [332, 332], [334, 334], [336, 336], [338, 338], [340, 340],
2736        [342, 342], [344, 344], [346, 346], [348, 348], [350, 350],
2737        [352, 352], [354, 354], [356, 356], [358, 358], [360, 360],
2738        [362, 362], [364, 364], [366, 366], [368, 368], [370, 370],
2739        [372, 372], [374, 374], [376, 377], [379, 379], [381, 381],
2740        [385, 386], [388, 388], [390, 391], [393, 395], [398, 401],
2741        [403, 404], [406, 408], [412, 413], [415, 416], [418, 418],
2742        [420, 420], [422, 423], [425, 425], [428, 428], [430, 431],
2743        [433, 435], [437, 437], [439, 440], [444, 444], [452, 452],
2744        [455, 455], [458, 458], [461, 461], [463, 463], [465, 465],
2745        [467, 467], [469, 469], [471, 471], [473, 473], [475, 475],
2746        [478, 478], [480, 480], [482, 482], [484, 484], [486, 486],
2747        [488, 488], [490, 490], [492, 492], [494, 494], [497, 497],
2748        [500, 500], [502, 504], [506, 506], [508, 508], [510, 510],
2749        [512, 512], [514, 514], [516, 516], [518, 518], [520, 520],
2750        [522, 522], [524, 524], [526, 526], [528, 528], [530, 530],
2751        [532, 532], [534, 534], [536, 536], [538, 538], [540, 540],
2752        [542, 542], [544, 544], [546, 546], [548, 548], [550, 550],
2753        [552, 552], [554, 554], [556, 556], [558, 558], [560, 560],
2754        [562, 562], [570, 571], [573, 574], [577, 577], [579, 582],
2755        [584, 584], [586, 586], [588, 588], [590, 590], [880, 880],
2756        [882, 882], [886, 886], [895, 895], [902, 902], [904, 906],
2757        [908, 908], [910, 911], [913, 929], [931, 939], [975, 975],
2758        [978, 980], [984, 984], [986, 986], [988, 988], [990, 990],
2759        [992, 992], [994, 994], [996, 996], [998, 998], [1000, 1000],
2760        [1002, 1002], [1004, 1004], [1006, 1006], [1012, 1012],
2761        [1015, 1015], [1017, 1018], [1021, 1071], [1120, 1120],
2762        [1122, 1122], [1124, 1124], [1126, 1126], [1128, 1128],
2763        [1130, 1130], [1132, 1132], [1134, 1134], [1136, 1136],
2764        [1138, 1138], [1140, 1140], [1142, 1142], [1144, 1144],
2765        [1146, 1146], [1148, 1148], [1150, 1150], [1152, 1152],
2766        [1162, 1162], [1164, 1164], [1166, 1166], [1168, 1168],
2767        [1170, 1170], [1172, 1172], [1174, 1174], [1176, 1176],
2768        [1178, 1178], [1180, 1180], [1182, 1182], [1184, 1184],
2769        [1186, 1186], [1188, 1188], [1190, 1190], [1192, 1192],
2770        [1194, 1194], [1196, 1196], [1198, 1198], [1200, 1200],
2771        [1202, 1202], [1204, 1204], [1206, 1206], [1208, 1208],
2772        [1210, 1210], [1212, 1212], [1214, 1214], [1216, 1217],
2773        [1219, 1219], [1221, 1221], [1223, 1223], [1225, 1225],
2774        [1227, 1227], [1229, 1229], [1232, 1232], [1234, 1234],
2775        [1236, 1236], [1238, 1238], [1240, 1240], [1242, 1242],
2776        [1244, 1244], [1246, 1246], [1248, 1248], [1250, 1250],
2777        [1252, 1252], [1254, 1254], [1256, 1256], [1258, 1258],
2778        [1260, 1260], [1262, 1262], [1264, 1264], [1266, 1266],
2779        [1268, 1268], [1270, 1270], [1272, 1272], [1274, 1274],
2780        [1276, 1276], [1278, 1278], [1280, 1280], [1282, 1282],
2781        [1284, 1284], [1286, 1286], [1288, 1288], [1290, 1290],
2782        [1292, 1292], [1294, 1294], [1296, 1296], [1298, 1298],
2783        [1300, 1300], [1302, 1302], [1304, 1304], [1306, 1306],
2784        [1308, 1308], [1310, 1310], [1312, 1312], [1314, 1314],
2785        [1316, 1316], [1318, 1318], [1320, 1320], [1322, 1322],
2786        [1324, 1324], [1326, 1326], [1329, 1366], [4256, 4293],
2787        [4295, 4295], [4301, 4301], [5024, 5109], [7680, 7680],
2788        [7682, 7682], [7684, 7684], [7686, 7686], [7688, 7688],
2789        [7690, 7690], [7692, 7692], [7694, 7694], [7696, 7696],
2790        [7698, 7698], [7700, 7700], [7702, 7702], [7704, 7704],
2791        [7706, 7706], [7708, 7708], [7710, 7710], [7712, 7712],
2792        [7714, 7714], [7716, 7716], [7718, 7718], [7720, 7720],
2793        [7722, 7722], [7724, 7724], [7726, 7726], [7728, 7728],
2794        [7730, 7730], [7732, 7732], [7734, 7734], [7736, 7736],
2795        [7738, 7738], [7740, 7740], [7742, 7742], [7744, 7744],
2796        [7746, 7746], [7748, 7748], [7750, 7750], [7752, 7752],
2797        [7754, 7754], [7756, 7756], [7758, 7758], [7760, 7760],
2798        [7762, 7762], [7764, 7764], [7766, 7766], [7768, 7768],
2799        [7770, 7770], [7772, 7772], [7774, 7774], [7776, 7776],
2800        [7778, 7778], [7780, 7780], [7782, 7782], [7784, 7784],
2801        [7786, 7786], [7788, 7788], [7790, 7790], [7792, 7792],
2802        [7794, 7794], [7796, 7796], [7798, 7798], [7800, 7800],
2803        [7802, 7802], [7804, 7804], [7806, 7806], [7808, 7808],
2804        [7810, 7810], [7812, 7812], [7814, 7814], [7816, 7816],
2805        [7818, 7818], [7820, 7820], [7822, 7822], [7824, 7824],
2806        [7826, 7826], [7828, 7828], [7838, 7838], [7840, 7840],
2807        [7842, 7842], [7844, 7844], [7846, 7846], [7848, 7848],
2808        [7850, 7850], [7852, 7852], [7854, 7854], [7856, 7856],
2809        [7858, 7858], [7860, 7860], [7862, 7862], [7864, 7864],
2810        [7866, 7866], [7868, 7868], [7870, 7870], [7872, 7872],
2811        [7874, 7874], [7876, 7876], [7878, 7878], [7880, 7880],
2812        [7882, 7882], [7884, 7884], [7886, 7886], [7888, 7888],
2813        [7890, 7890], [7892, 7892], [7894, 7894], [7896, 7896],
2814        [7898, 7898], [7900, 7900], [7902, 7902], [7904, 7904],
2815        [7906, 7906], [7908, 7908], [7910, 7910], [7912, 7912],
2816        [7914, 7914], [7916, 7916], [7918, 7918], [7920, 7920],
2817        [7922, 7922], [7924, 7924], [7926, 7926], [7928, 7928],
2818        [7930, 7930], [7932, 7932], [7934, 7934], [7944, 7951],
2819        [7960, 7965], [7976, 7983], [7992, 7999], [8008, 8013],
2820        [8025, 8025], [8027, 8027], [8029, 8029], [8031, 8031],
2821        [8040, 8047], [8120, 8123], [8136, 8139], [8152, 8155],
2822        [8168, 8172], [8184, 8187], [8450, 8450], [8455, 8455],
2823        [8459, 8461], [8464, 8466], [8469, 8469], [8473, 8477],
2824        [8484, 8484], [8486, 8486], [8488, 8488], [8490, 8493],
2825        [8496, 8499], [8510, 8511], [8517, 8517], [8544, 8559],
2826        [8579, 8579], [9398, 9423], [11264, 11310], [11360, 11360],
2827        [11362, 11364], [11367, 11367], [11369, 11369], [11371, 11371],
2828        [11373, 11376], [11378, 11378], [11381, 11381], [11390, 11392],
2829        [11394, 11394], [11396, 11396], [11398, 11398], [11400, 11400],
2830        [11402, 11402], [11404, 11404], [11406, 11406], [11408, 11408],
2831        [11410, 11410], [11412, 11412], [11414, 11414], [11416, 11416],
2832        [11418, 11418], [11420, 11420], [11422, 11422], [11424, 11424],
2833        [11426, 11426], [11428, 11428], [11430, 11430], [11432, 11432],
2834        [11434, 11434], [11436, 11436], [11438, 11438], [11440, 11440],
2835        [11442, 11442], [11444, 11444], [11446, 11446], [11448, 11448],
2836        [11450, 11450], [11452, 11452], [11454, 11454], [11456, 11456],
2837        [11458, 11458], [11460, 11460], [11462, 11462], [11464, 11464],
2838        [11466, 11466], [11468, 11468], [11470, 11470], [11472, 11472],
2839        [11474, 11474], [11476, 11476], [11478, 11478], [11480, 11480],
2840        [11482, 11482], [11484, 11484], [11486, 11486], [11488, 11488],
2841        [11490, 11490], [11499, 11499], [11501, 11501], [11506, 11506],
2842        [42560, 42560], [42562, 42562], [42564, 42564], [42566, 42566],
2843        [42568, 42568], [42570, 42570], [42572, 42572], [42574, 42574],
2844        [42576, 42576], [42578, 42578], [42580, 42580], [42582, 42582],
2845        [42584, 42584], [42586, 42586], [42588, 42588], [42590, 42590],
2846        [42592, 42592], [42594, 42594], [42596, 42596], [42598, 42598],
2847        [42600, 42600], [42602, 42602], [42604, 42604], [42624, 42624],
2848        [42626, 42626], [42628, 42628], [42630, 42630], [42632, 42632],
2849        [42634, 42634], [42636, 42636], [42638, 42638], [42640, 42640],
2850        [42642, 42642], [42644, 42644], [42646, 42646], [42648, 42648],
2851        [42650, 42650], [42786, 42786], [42788, 42788], [42790, 42790],
2852        [42792, 42792], [42794, 42794], [42796, 42796], [42798, 42798],
2853        [42802, 42802], [42804, 42804], [42806, 42806], [42808, 42808],
2854        [42810, 42810], [42812, 42812], [42814, 42814], [42816, 42816],
2855        [42818, 42818], [42820, 42820], [42822, 42822], [42824, 42824],
2856        [42826, 42826], [42828, 42828], [42830, 42830], [42832, 42832],
2857        [42834, 42834], [42836, 42836], [42838, 42838], [42840, 42840],
2858        [42842, 42842], [42844, 42844], [42846, 42846], [42848, 42848],
2859        [42850, 42850], [42852, 42852], [42854, 42854], [42856, 42856],
2860        [42858, 42858], [42860, 42860], [42862, 42862], [42873, 42873],
2861        [42875, 42875], [42877, 42878], [42880, 42880], [42882, 42882],
2862        [42884, 42884], [42886, 42886], [42891, 42891], [42893, 42893],
2863        [42896, 42896], [42898, 42898], [42902, 42902], [42904, 42904],
2864        [42906, 42906], [42908, 42908], [42910, 42910], [42912, 42912],
2865        [42914, 42914], [42916, 42916], [42918, 42918], [42920, 42920],
2866        [42922, 42925], [42928, 42932], [42934, 42934], [65313, 65338],
2867        [66560, 66599], [68736, 68786], [71840, 71871], [119808, 119833],
2868        [119860, 119885], [119912, 119937], [119964, 119964],
2869        [119966, 119967], [119970, 119970], [119973, 119974],
2870        [119977, 119980], [119982, 119989], [120016, 120041],
2871        [120068, 120069], [120071, 120074], [120077, 120084],
2872        [120086, 120092], [120120, 120121], [120123, 120126],
2873        [120128, 120132], [120134, 120134], [120138, 120144],
2874        [120172, 120197], [120224, 120249], [120276, 120301],
2875        [120328, 120353], [120380, 120405], [120432, 120457],
2876        [120488, 120512], [120546, 120570], [120604, 120628],
2877        [120662, 120686], [120720, 120744], [120778, 120778],
2878        [127280, 127305], [127312, 127337], [127344, 127369]**/
2879        const UnicodeSet codepoint_set
2880            {{{Empty, 2}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 1},
2881              {Mixed, 11}, {Empty, 8}, {Mixed, 5}, {Full, 1}, {Mixed, 1},
2882              {Empty, 1}, {Mixed, 8}, {Empty, 90}, {Full, 1}, {Mixed, 1},
2883              {Empty, 22}, {Full, 2}, {Mixed, 1}, {Empty, 80}, {Mixed, 12},
2884              {Empty, 1}, {Mixed, 3}, {Empty, 8}, {Mixed, 5}, {Empty, 24},
2885              {Mixed, 2}, {Empty, 57}, {Full, 1}, {Mixed, 1}, {Empty, 1},
2886              {Mixed, 5}, {Empty, 970}, {Mixed, 3}, {Empty, 4}, {Mixed, 5},
2887              {Empty, 699}, {Mixed, 1}, {Empty, 38}, {Full, 1}, {Mixed, 1},
2888              {Empty, 66}, {Full, 1}, {Mixed, 1}, {Empty, 95}, {Full, 1},
2889              {Empty, 1498}, {Mixed, 31}, {Empty, 202}, {Mixed, 4},
2890              {Empty, 30835}},
2891             {0x07fffffe, 0x7f7fffff, 0x55555555, 0xaa555555, 0x555554aa,
2892              0x2b555555, 0xb1dbced6, 0x11aed2d5, 0x4aaaa490, 0x55d25555,
2893              0x55555555, 0x6c055555, 0x0000557a, 0x80450000, 0xfffed740,
2894              0x00000ffb, 0x551c8000, 0xe6905555, 0x0000ffff, 0x55555555,
2895              0x55555401, 0x55555555, 0x55552aab, 0x55555555, 0x55555555,
2896              0xfffe5555, 0x007fffff, 0x000020bf, 0x003fffff, 0x55555555,
2897              0x55555555, 0x55555555, 0x55555555, 0x40155555, 0x55555555,
2898              0x55555555, 0x55555555, 0x3f00ff00, 0xff00ff00, 0xaa003f00,
2899              0x0000ff00, 0x0f000000, 0x0f000f00, 0x0f001f00, 0x3e273884,
2900              0xc00f3d50, 0x00000020, 0x0000ffff, 0x00000008, 0xffc00000,
2901              0x0000ffff, 0x00007fff, 0xc025ea9d, 0x55555555, 0x55555555,
2902              0x55555555, 0x00042805, 0x55555555, 0x00001555, 0x05555555,
2903              0x55545554, 0x55555555, 0x6a005555, 0x55452855, 0x005f3d55,
2904              0x07fffffe, 0x000000ff, 0x0007ffff, 0x03ffffff, 0xfff00000,
2905              0x00003fff, 0xffffff00, 0xd0000003, 0x003fde64, 0xffff0000,
2906              0x000003ff, 0x1fdfe7b0, 0x7b000000, 0x0001fc5f, 0xfffff000,
2907              0x0000003f, 0x03ffffff, 0xfff00000, 0x00003fff, 0xffffff00,
2908              0xf0000003, 0x003fffff, 0xffff0000, 0x000003ff, 0xffffff00,
2909              0x00000001, 0x07fffffc, 0xf0000000, 0x001fffff, 0xffc00000,
2910              0x00007fff, 0xffff0000, 0x000001ff, 0x00000400, 0xffff0000,
2911              0xffff03ff, 0xffff03ff, 0x000003ff}};
2912        static BinaryPropertyObject property_object{Upper, codepoint_set};
2913    }
2914    namespace XIDC_ns {
2915        /** Code Point Ranges for XIDC
2916        [48, 57], [65, 90], [95, 95], [97, 122], [170, 170], [181, 181],
2917        [183, 183], [186, 186], [192, 214], [216, 246], [248, 705],
2918        [710, 721], [736, 740], [748, 748], [750, 750], [768, 884],
2919        [886, 887], [891, 893], [895, 895], [902, 906], [908, 908],
2920        [910, 929], [931, 1013], [1015, 1153], [1155, 1159], [1162, 1327],
2921        [1329, 1366], [1369, 1369], [1377, 1415], [1425, 1469],
2922        [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479],
2923        [1488, 1514], [1520, 1522], [1552, 1562], [1568, 1641],
2924        [1646, 1747], [1749, 1756], [1759, 1768], [1770, 1788],
2925        [1791, 1791], [1808, 1866], [1869, 1969], [1984, 2037],
2926        [2042, 2042], [2048, 2093], [2112, 2139], [2208, 2228],
2927        [2275, 2403], [2406, 2415], [2417, 2435], [2437, 2444],
2928        [2447, 2448], [2451, 2472], [2474, 2480], [2482, 2482],
2929        [2486, 2489], [2492, 2500], [2503, 2504], [2507, 2510],
2930        [2519, 2519], [2524, 2525], [2527, 2531], [2534, 2545],
2931        [2561, 2563], [2565, 2570], [2575, 2576], [2579, 2600],
2932        [2602, 2608], [2610, 2611], [2613, 2614], [2616, 2617],
2933        [2620, 2620], [2622, 2626], [2631, 2632], [2635, 2637],
2934        [2641, 2641], [2649, 2652], [2654, 2654], [2662, 2677],
2935        [2689, 2691], [2693, 2701], [2703, 2705], [2707, 2728],
2936        [2730, 2736], [2738, 2739], [2741, 2745], [2748, 2757],
2937        [2759, 2761], [2763, 2765], [2768, 2768], [2784, 2787],
2938        [2790, 2799], [2809, 2809], [2817, 2819], [2821, 2828],
2939        [2831, 2832], [2835, 2856], [2858, 2864], [2866, 2867],
2940        [2869, 2873], [2876, 2884], [2887, 2888], [2891, 2893],
2941        [2902, 2903], [2908, 2909], [2911, 2915], [2918, 2927],
2942        [2929, 2929], [2946, 2947], [2949, 2954], [2958, 2960],
2943        [2962, 2965], [2969, 2970], [2972, 2972], [2974, 2975],
2944        [2979, 2980], [2984, 2986], [2990, 3001], [3006, 3010],
2945        [3014, 3016], [3018, 3021], [3024, 3024], [3031, 3031],
2946        [3046, 3055], [3072, 3075], [3077, 3084], [3086, 3088],
2947        [3090, 3112], [3114, 3129], [3133, 3140], [3142, 3144],
2948        [3146, 3149], [3157, 3158], [3160, 3162], [3168, 3171],
2949        [3174, 3183], [3201, 3203], [3205, 3212], [3214, 3216],
2950        [3218, 3240], [3242, 3251], [3253, 3257], [3260, 3268],
2951        [3270, 3272], [3274, 3277], [3285, 3286], [3294, 3294],
2952        [3296, 3299], [3302, 3311], [3313, 3314], [3329, 3331],
2953        [3333, 3340], [3342, 3344], [3346, 3386], [3389, 3396],
2954        [3398, 3400], [3402, 3406], [3415, 3415], [3423, 3427],
2955        [3430, 3439], [3450, 3455], [3458, 3459], [3461, 3478],
2956        [3482, 3505], [3507, 3515], [3517, 3517], [3520, 3526],
2957        [3530, 3530], [3535, 3540], [3542, 3542], [3544, 3551],
2958        [3558, 3567], [3570, 3571], [3585, 3642], [3648, 3662],
2959        [3664, 3673], [3713, 3714], [3716, 3716], [3719, 3720],
2960        [3722, 3722], [3725, 3725], [3732, 3735], [3737, 3743],
2961        [3745, 3747], [3749, 3749], [3751, 3751], [3754, 3755],
2962        [3757, 3769], [3771, 3773], [3776, 3780], [3782, 3782],
2963        [3784, 3789], [3792, 3801], [3804, 3807], [3840, 3840],
2964        [3864, 3865], [3872, 3881], [3893, 3893], [3895, 3895],
2965        [3897, 3897], [3902, 3911], [3913, 3948], [3953, 3972],
2966        [3974, 3991], [3993, 4028], [4038, 4038], [4096, 4169],
2967        [4176, 4253], [4256, 4293], [4295, 4295], [4301, 4301],
2968        [4304, 4346], [4348, 4680], [4682, 4685], [4688, 4694],
2969        [4696, 4696], [4698, 4701], [4704, 4744], [4746, 4749],
2970        [4752, 4784], [4786, 4789], [4792, 4798], [4800, 4800],
2971        [4802, 4805], [4808, 4822], [4824, 4880], [4882, 4885],
2972        [4888, 4954], [4957, 4959], [4969, 4977], [4992, 5007],
2973        [5024, 5109], [5112, 5117], [5121, 5740], [5743, 5759],
2974        [5761, 5786], [5792, 5866], [5870, 5880], [5888, 5900],
2975        [5902, 5908], [5920, 5940], [5952, 5971], [5984, 5996],
2976        [5998, 6000], [6002, 6003], [6016, 6099], [6103, 6103],
2977        [6108, 6109], [6112, 6121], [6155, 6157], [6160, 6169],
2978        [6176, 6263], [6272, 6314], [6320, 6389], [6400, 6430],
2979        [6432, 6443], [6448, 6459], [6470, 6509], [6512, 6516],
2980        [6528, 6571], [6576, 6601], [6608, 6618], [6656, 6683],
2981        [6688, 6750], [6752, 6780], [6783, 6793], [6800, 6809],
2982        [6823, 6823], [6832, 6845], [6912, 6987], [6992, 7001],
2983        [7019, 7027], [7040, 7155], [7168, 7223], [7232, 7241],
2984        [7245, 7293], [7376, 7378], [7380, 7414], [7416, 7417],
2985        [7424, 7669], [7676, 7957], [7960, 7965], [7968, 8005],
2986        [8008, 8013], [8016, 8023], [8025, 8025], [8027, 8027],
2987        [8029, 8029], [8031, 8061], [8064, 8116], [8118, 8124],
2988        [8126, 8126], [8130, 8132], [8134, 8140], [8144, 8147],
2989        [8150, 8155], [8160, 8172], [8178, 8180], [8182, 8188],
2990        [8255, 8256], [8276, 8276], [8305, 8305], [8319, 8319],
2991        [8336, 8348], [8400, 8412], [8417, 8417], [8421, 8432],
2992        [8450, 8450], [8455, 8455], [8458, 8467], [8469, 8469],
2993        [8472, 8477], [8484, 8484], [8486, 8486], [8488, 8488],
2994        [8490, 8505], [8508, 8511], [8517, 8521], [8526, 8526],
2995        [8544, 8584], [11264, 11310], [11312, 11358], [11360, 11492],
2996        [11499, 11507], [11520, 11557], [11559, 11559], [11565, 11565],
2997        [11568, 11623], [11631, 11631], [11647, 11670], [11680, 11686],
2998        [11688, 11694], [11696, 11702], [11704, 11710], [11712, 11718],
2999        [11720, 11726], [11728, 11734], [11736, 11742], [11744, 11775],
3000        [12293, 12295], [12321, 12335], [12337, 12341], [12344, 12348],
3001        [12353, 12438], [12441, 12442], [12445, 12447], [12449, 12538],
3002        [12540, 12543], [12549, 12589], [12593, 12686], [12704, 12730],
3003        [12784, 12799], [13312, 19893], [19968, 40917], [40960, 42124],
3004        [42192, 42237], [42240, 42508], [42512, 42539], [42560, 42607],
3005        [42612, 42621], [42623, 42737], [42775, 42783], [42786, 42888],
3006        [42891, 42925], [42928, 42935], [42999, 43047], [43072, 43123],
3007        [43136, 43204], [43216, 43225], [43232, 43255], [43259, 43259],
3008        [43261, 43261], [43264, 43309], [43312, 43347], [43360, 43388],
3009        [43392, 43456], [43471, 43481], [43488, 43518], [43520, 43574],
3010        [43584, 43597], [43600, 43609], [43616, 43638], [43642, 43714],
3011        [43739, 43741], [43744, 43759], [43762, 43766], [43777, 43782],
3012        [43785, 43790], [43793, 43798], [43808, 43814], [43816, 43822],
3013        [43824, 43866], [43868, 43877], [43888, 44010], [44012, 44013],
3014        [44016, 44025], [44032, 55203], [55216, 55238], [55243, 55291],
3015        [63744, 64109], [64112, 64217], [64256, 64262], [64275, 64279],
3016        [64285, 64296], [64298, 64310], [64312, 64316], [64318, 64318],
3017        [64320, 64321], [64323, 64324], [64326, 64433], [64467, 64605],
3018        [64612, 64829], [64848, 64911], [64914, 64967], [65008, 65017],
3019        [65024, 65039], [65056, 65071], [65075, 65076], [65101, 65103],
3020        [65137, 65137], [65139, 65139], [65143, 65143], [65145, 65145],
3021        [65147, 65147], [65149, 65149], [65151, 65276], [65296, 65305],
3022        [65313, 65338], [65343, 65343], [65345, 65370], [65382, 65470],
3023        [65474, 65479], [65482, 65487], [65490, 65495], [65498, 65500],
3024        [65536, 65547], [65549, 65574], [65576, 65594], [65596, 65597],
3025        [65599, 65613], [65616, 65629], [65664, 65786], [65856, 65908],
3026        [66045, 66045], [66176, 66204], [66208, 66256], [66272, 66272],
3027        [66304, 66335], [66352, 66378], [66384, 66426], [66432, 66461],
3028        [66464, 66499], [66504, 66511], [66513, 66517], [66560, 66717],
3029        [66720, 66729], [66816, 66855], [66864, 66915], [67072, 67382],
3030        [67392, 67413], [67424, 67431], [67584, 67589], [67592, 67592],
3031        [67594, 67637], [67639, 67640], [67644, 67644], [67647, 67669],
3032        [67680, 67702], [67712, 67742], [67808, 67826], [67828, 67829],
3033        [67840, 67861], [67872, 67897], [67968, 68023], [68030, 68031],
3034        [68096, 68099], [68101, 68102], [68108, 68115], [68117, 68119],
3035        [68121, 68147], [68152, 68154], [68159, 68159], [68192, 68220],
3036        [68224, 68252], [68288, 68295], [68297, 68326], [68352, 68405],
3037        [68416, 68437], [68448, 68466], [68480, 68497], [68608, 68680],
3038        [68736, 68786], [68800, 68850], [69632, 69702], [69734, 69743],
3039        [69759, 69818], [69840, 69864], [69872, 69881], [69888, 69940],
3040        [69942, 69951], [69968, 70003], [70006, 70006], [70016, 70084],
3041        [70090, 70092], [70096, 70106], [70108, 70108], [70144, 70161],
3042        [70163, 70199], [70272, 70278], [70280, 70280], [70282, 70285],
3043        [70287, 70301], [70303, 70312], [70320, 70378], [70384, 70393],
3044        [70400, 70403], [70405, 70412], [70415, 70416], [70419, 70440],
3045        [70442, 70448], [70450, 70451], [70453, 70457], [70460, 70468],
3046        [70471, 70472], [70475, 70477], [70480, 70480], [70487, 70487],
3047        [70493, 70499], [70502, 70508], [70512, 70516], [70784, 70853],
3048        [70855, 70855], [70864, 70873], [71040, 71093], [71096, 71104],
3049        [71128, 71133], [71168, 71232], [71236, 71236], [71248, 71257],
3050        [71296, 71351], [71360, 71369], [71424, 71449], [71453, 71467],
3051        [71472, 71481], [71840, 71913], [71935, 71935], [72384, 72440],
3052        [73728, 74649], [74752, 74862], [74880, 75075], [77824, 78894],
3053        [82944, 83526], [92160, 92728], [92736, 92766], [92768, 92777],
3054        [92880, 92909], [92912, 92916], [92928, 92982], [92992, 92995],
3055        [93008, 93017], [93027, 93047], [93053, 93071], [93952, 94020],
3056        [94032, 94078], [94095, 94111], [110592, 110593], [113664, 113770],
3057        [113776, 113788], [113792, 113800], [113808, 113817],
3058        [113821, 113822], [119141, 119145], [119149, 119154],
3059        [119163, 119170], [119173, 119179], [119210, 119213],
3060        [119362, 119364], [119808, 119892], [119894, 119964],
3061        [119966, 119967], [119970, 119970], [119973, 119974],
3062        [119977, 119980], [119982, 119993], [119995, 119995],
3063        [119997, 120003], [120005, 120069], [120071, 120074],
3064        [120077, 120084], [120086, 120092], [120094, 120121],
3065        [120123, 120126], [120128, 120132], [120134, 120134],
3066        [120138, 120144], [120146, 120485], [120488, 120512],
3067        [120514, 120538], [120540, 120570], [120572, 120596],
3068        [120598, 120628], [120630, 120654], [120656, 120686],
3069        [120688, 120712], [120714, 120744], [120746, 120770],
3070        [120772, 120779], [120782, 120831], [121344, 121398],
3071        [121403, 121452], [121461, 121461], [121476, 121476],
3072        [121499, 121503], [121505, 121519], [124928, 125124],
3073        [125136, 125142], [126464, 126467], [126469, 126495],
3074        [126497, 126498], [126500, 126500], [126503, 126503],
3075        [126505, 126514], [126516, 126519], [126521, 126521],
3076        [126523, 126523], [126530, 126530], [126535, 126535],
3077        [126537, 126537], [126539, 126539], [126541, 126543],
3078        [126545, 126546], [126548, 126548], [126551, 126551],
3079        [126553, 126553], [126555, 126555], [126557, 126557],
3080        [126559, 126559], [126561, 126562], [126564, 126564],
3081        [126567, 126570], [126572, 126578], [126580, 126583],
3082        [126585, 126588], [126590, 126590], [126592, 126601],
3083        [126603, 126619], [126625, 126627], [126629, 126633],
3084        [126635, 126651], [131072, 173782], [173824, 177972],
3085        [177984, 178205], [178208, 183969], [194560, 195101],
3086        [917760, 917999]**/
3087        const UnicodeSet codepoint_set
3088            {{{Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 3}, {Full, 14},
3089              {Mixed, 2}, {Full, 3}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
3090              {Full, 4}, {Mixed, 1}, {Full, 4}, {Mixed, 8}, {Full, 2},
3091              {Mixed, 1}, {Full, 2}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
3092              {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 1},
3093              {Mixed, 2}, {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
3094              {Full, 3}, {Mixed, 40}, {Empty, 1}, {Mixed, 3}, {Empty, 1},
3095              {Mixed, 7}, {Empty, 1}, {Full, 2}, {Mixed, 1}, {Full, 1},
3096              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 10}, {Mixed, 1},
3097              {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 1}, {Full, 1},
3098              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Full, 18}, {Mixed, 2},
3099              {Full, 2}, {Mixed, 5}, {Full, 2}, {Mixed, 3}, {Full, 2},
3100              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 5},
3101              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Full, 1},
3102              {Mixed, 4}, {Empty, 2}, {Full, 2}, {Mixed, 2}, {Full, 3},
3103              {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 2}, {Mixed, 2},
3104              {Full, 7}, {Mixed, 1}, {Full, 8}, {Mixed, 1}, {Full, 1},
3105              {Mixed, 2}, {Full, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 4},
3106              {Empty, 1}, {Mixed, 5}, {Full, 1}, {Mixed, 1}, {Empty, 83},
3107              {Full, 1}, {Mixed, 2}, {Full, 4}, {Mixed, 1}, {Full, 1},
3108              {Mixed, 1}, {Full, 1}, {Mixed, 4}, {Full, 1}, {Empty, 16},
3109              {Mixed, 3}, {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 3},
3110              {Full, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 16},
3111              {Full, 205}, {Mixed, 1}, {Empty, 2}, {Full, 654}, {Mixed, 1},
3112              {Empty, 1}, {Full, 36}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
3113              {Full, 8}, {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 3},
3114              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 1},
3115              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 2},
3116              {Mixed, 2}, {Full, 1}, {Mixed, 3}, {Full, 2}, {Mixed, 2},
3117              {Full, 1}, {Mixed, 3}, {Full, 2}, {Mixed, 6}, {Full, 3},
3118              {Mixed, 1}, {Full, 349}, {Mixed, 3}, {Empty, 264}, {Full, 11},
3119              {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3},
3120              {Full, 2}, {Mixed, 2}, {Full, 3}, {Mixed, 2}, {Full, 5},
3121              {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 6},
3122              {Full, 3}, {Mixed, 5}, {Full, 1}, {Mixed, 2}, {Empty, 1},
3123              {Mixed, 3}, {Empty, 1}, {Full, 3}, {Mixed, 1}, {Empty, 2},
3124              {Full, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 4},
3125              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 4},
3126              {Full, 1}, {Mixed, 1}, {Empty, 1}, {Full, 4}, {Mixed, 2},
3127              {Empty, 2}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
3128              {Empty, 4}, {Full, 9}, {Mixed, 3}, {Empty, 4}, {Mixed, 5},
3129              {Empty, 2}, {Mixed, 3}, {Empty, 2}, {Full, 1}, {Mixed, 1},
3130              {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 1},
3131              {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Empty, 3}, {Full, 2},
3132              {Mixed, 1}, {Empty, 1}, {Full, 1}, {Mixed, 1}, {Full, 1},
3133              {Mixed, 1}, {Empty, 24}, {Full, 2}, {Mixed, 2}, {Full, 1},
3134              {Mixed, 3}, {Full, 1}, {Mixed, 3}, {Full, 2}, {Mixed, 1},
3135              {Empty, 1}, {Mixed, 2}, {Empty, 2}, {Mixed, 2}, {Full, 1},
3136              {Mixed, 5}, {Empty, 8}, {Full, 2}, {Mixed, 1}, {Empty, 5},
3137              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Full, 2}, {Mixed, 1},
3138              {Empty, 1}, {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
3139              {Empty, 11}, {Full, 2}, {Mixed, 1}, {Empty, 14}, {Full, 1},
3140              {Mixed, 1}, {Empty, 40}, {Full, 28}, {Mixed, 1}, {Empty, 3},
3141              {Full, 3}, {Mixed, 1}, {Full, 6}, {Mixed, 1}, {Empty, 85},
3142              {Full, 33}, {Mixed, 1}, {Empty, 126}, {Full, 18}, {Mixed, 1},
3143              {Empty, 269}, {Full, 17}, {Mixed, 3}, {Empty, 2}, {Mixed, 2},
3144              {Full, 1}, {Mixed, 4}, {Empty, 27}, {Full, 2}, {Mixed, 3},
3145              {Empty, 515}, {Mixed, 1}, {Empty, 95}, {Full, 3}, {Mixed, 2},
3146              {Empty, 166}, {Mixed, 3}, {Empty, 4}, {Mixed, 1}, {Empty, 13},
3147              {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Full, 1},
3148              {Mixed, 3}, {Full, 10}, {Mixed, 10}, {Full, 1}, {Empty, 16},
3149              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 106},
3150              {Full, 6}, {Mixed, 1}, {Empty, 41}, {Mixed, 6}, {Empty, 138},
3151              {Full, 1334}, {Mixed, 1}, {Empty, 1}, {Full, 129}, {Mixed, 1},
3152              {Full, 6}, {Mixed, 1}, {Full, 180}, {Mixed, 1}, {Empty, 330},
3153              {Full, 16}, {Mixed, 1}, {Empty, 22583}, {Full, 7}, {Mixed, 1},
3154              {Empty, 6128}},
3155             {0x03ff0000, 0x87fffffe, 0x07fffffe, 0x04a00400, 0xff7fffff,
3156              0xff7fffff, 0x0003ffc3, 0x0000501f, 0xb8dfffff, 0xffffd7c0,
3157              0xfffffffb, 0xffbfffff, 0xfffffcfb, 0xfffeffff, 0x027fffff,
3158              0xfffffffe, 0xfffe00ff, 0xbfffffff, 0xffff00b6, 0x000707ff,
3159              0x07ff0000, 0xffffc3ff, 0x9fefffff, 0x9ffffdff, 0xffff0000,
3160              0xffffe7ff, 0x0003ffff, 0x043fffff, 0x00003fff, 0x0fffffff,
3161              0x001fffff, 0xfffffff8, 0xfffeffcf, 0xfff99fef, 0xf3c5fdff,
3162              0xb080799f, 0x0003ffcf, 0xfff987ee, 0xd36dfdff, 0x5e023987,
3163              0x003fffc0, 0xfffbbfee, 0xf3edfdff, 0x00013bbf, 0x0200ffcf,
3164              0xfff99fee, 0xf3edfdff, 0xb0c0399f, 0x0002ffcf, 0xd63dc7ec,
3165              0xc3ffc718, 0x00813dc7, 0x0000ffc0, 0xfffddfef, 0xe3fffdff,
3166              0x07603ddf, 0x0000ffcf, 0xfffddfee, 0xf3effdff, 0x40603ddf,
3167              0x0006ffcf, 0xfffddfee, 0xe7ffffff, 0x80807ddf, 0xfc00ffcf,
3168              0xfc7fffec, 0x2ffbffff, 0xff5f847f, 0x000cffc0, 0xfffffffe,
3169              0x07ffffff, 0x03ff7fff, 0xfef02596, 0x3bffecae, 0xf3ff3f5f,
3170              0x03000001, 0xc2a003ff, 0xfffffeff, 0xfffe1fff, 0xfeffffdf,
3171              0x1fffffff, 0x00000040, 0xffff03ff, 0x3fffffff, 0xffff20bf,
3172              0xf7ffffff, 0x3d7f3dff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d,
3173              0xff3dffff, 0xe7ffffff, 0x0003fe00, 0x0000ffff, 0x3f3fffff,
3174              0xfffffffe, 0xffff9fff, 0x07fffffe, 0x01ffc7ff, 0x001fdfff,
3175              0x001fffff, 0x000fffff, 0x000ddfff, 0x308fffff, 0x000003ff,
3176              0x03ff3800, 0x00ffffff, 0xffff07ff, 0x003fffff, 0x7fffffff,
3177              0x0fff0fff, 0xffffffc0, 0x001f3fff, 0xffff0fff, 0x07ff03ff,
3178              0x0fffffff, 0x7fffffff, 0x9fffffff, 0x03ff03ff, 0x3fff0080,
3179              0x03ff0fff, 0x000ff800, 0x000fffff, 0x00ffffff, 0xffffe3ff,
3180              0x3fffffff, 0xfff70000, 0x037fffff, 0xf03fffff, 0x3f3fffff,
3181              0xaaff3f3f, 0x3fffffff, 0x5fdfffff, 0x0fcf1fdc, 0x1fdc1fff,
3182              0x80000000, 0x00100001, 0x80020000, 0x1fff0000, 0x1fff0000,
3183              0x0001ffe2, 0x3f2ffc84, 0xf3fffd50, 0x000043e0, 0x000001ff,
3184              0xffff7fff, 0x7fffffff, 0x000ff81f, 0xffff20bf, 0x800080ff,
3185              0x007fffff, 0x7f7f7f7f, 0x7f7f7f7f, 0x000000e0, 0x1f3efffe,
3186              0xfffffffe, 0xe67fffff, 0xfffffffe, 0xf7ffffff, 0xffffffe0,
3187              0xfffe3fff, 0x00007fff, 0x07ffffff, 0xffff0000, 0x003fffff,
3188              0x003fffff, 0x00001fff, 0xffff0000, 0x3fffffff, 0xffff1fff,
3189              0x00000fff, 0xbff0ffff, 0x0003ffff, 0xff800000, 0xfffffffc,
3190              0xfffff9ff, 0x00ff3fff, 0xff800000, 0x000000ff, 0x000fffff,
3191              0x03ff001f, 0x28ffffff, 0xffff3fff, 0x000fffff, 0x1fffffff,
3192              0x03ff8001, 0x7fffffff, 0x007fffff, 0x03ff3fff, 0xfc7fffff,
3193              0x38000007, 0x007cffff, 0x007e7e7e, 0xffff7f7f, 0xf7ffffff,
3194              0xffff003f, 0x03ff37ff, 0xffff000f, 0xfffff87f, 0x0fffffff,
3195              0xffff3fff, 0x03ffffff, 0xe0f8007f, 0x5f7ffdff, 0xffffffdb,
3196              0x0003ffff, 0xfff80000, 0x3fffffff, 0xfffffff0, 0x3fffffff,
3197              0xffff0000, 0xfffcffff, 0x000000ff, 0x03ff0000, 0x0000ffff,
3198              0x0018ffff, 0x0000e000, 0xaa8a0000, 0x1fffffff, 0x03ff0000,
3199              0x87fffffe, 0x07fffffe, 0xffffffc0, 0x7fffffff, 0x1cfcfcfc,
3200              0xffffefff, 0xb7ffff7f, 0x3fff3fff, 0x07ffffff, 0x001fffff,
3201              0x20000000, 0x1fffffff, 0x0001ffff, 0x00000001, 0xffff0000,
3202              0xffff07ff, 0x07ffffff, 0x3fffffff, 0x003eff0f, 0x3fffffff,
3203              0x000003ff, 0xffff00ff, 0x0000000f, 0x007fffff, 0x003fffff,
3204              0x000000ff, 0xfffffd3f, 0x91bfffff, 0x003fffff, 0x007fffff,
3205              0x7fffffff, 0x0037ffff, 0x003fffff, 0x03ffffff, 0xc0ffffff,
3206              0xfeeff06f, 0x870fffff, 0x1fffffff, 0x1fffffff, 0xfffffeff,
3207              0x0000007f, 0x003fffff, 0x003fffff, 0x0007ffff, 0x0003ffff,
3208              0x000001ff, 0x0007ffff, 0x0007ffff, 0x0000007f, 0x8000ffc0,
3209              0x07ffffff, 0xffff0000, 0x03ff01ff, 0xffdfffff, 0xffff0000,
3210              0x004fffff, 0x17ff1c1f, 0xfffbffff, 0x00ffffff, 0xbfffbd7f,
3211              0xffff01ff, 0x03ff07ff, 0xfff99fef, 0xf3edfdff, 0xe081399f,
3212              0x001f1fcf, 0x03ff00bf, 0xff3fffff, 0x3f000001, 0x03ff0011,
3213              0x00ffffff, 0x000003ff, 0xe3ffffff, 0x03ff0fff, 0x800003ff,
3214              0x01ffffff, 0x03ffffff, 0x00007fff, 0x0000000f, 0x00007fff,
3215              0x0000007f, 0x01ffffff, 0x7fffffff, 0x000003ff, 0xffff0000,
3216              0x001f3fff, 0x007fffff, 0x03ff000f, 0xe0fffff8, 0x0000ffff,
3217              0xffff001f, 0x7fffffff, 0xffff8000, 0x00000003, 0x1fff07ff,
3218              0x63ff01ff, 0xf807e3e0, 0x00000fe7, 0x00003c00, 0x0000001c,
3219              0xffdfffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xdfdfe7bf,
3220              0x7bffffff, 0xfffdfc5f, 0xffffff3f, 0xf7fffffd, 0xf7ffffff,
3221              0xffdfffff, 0xffdfffff, 0xffff7fff, 0xffff7fff, 0xfffffdff,
3222              0xfffffdff, 0xffffcff7, 0xf87fffff, 0x00201fff, 0xf8000010,
3223              0x0000fffe, 0x007f001f, 0xffffffef, 0x0af7fe96, 0xaa96ea84,
3224              0x5ef7f796, 0x0ffffbff, 0x0ffffbee, 0x007fffff, 0x001fffff,
3225              0x3fffffff, 0x00000003, 0x3fffffff, 0x0000ffff}};
3226        static BinaryPropertyObject property_object{XIDC, codepoint_set};
3227    }
3228    namespace XIDS_ns {
3229        /** Code Point Ranges for XIDS
3230        [65, 90], [97, 122], [170, 170], [181, 181], [186, 186], [192, 214],
3231        [216, 246], [248, 705], [710, 721], [736, 740], [748, 748],
3232        [750, 750], [880, 884], [886, 887], [891, 893], [895, 895],
3233        [902, 902], [904, 906], [908, 908], [910, 929], [931, 1013],
3234        [1015, 1153], [1162, 1327], [1329, 1366], [1369, 1369],
3235        [1377, 1415], [1488, 1514], [1520, 1522], [1568, 1610],
3236        [1646, 1647], [1649, 1747], [1749, 1749], [1765, 1766],
3237        [1774, 1775], [1786, 1788], [1791, 1791], [1808, 1808],
3238        [1810, 1839], [1869, 1957], [1969, 1969], [1994, 2026],
3239        [2036, 2037], [2042, 2042], [2048, 2069], [2074, 2074],
3240        [2084, 2084], [2088, 2088], [2112, 2136], [2208, 2228],
3241        [2308, 2361], [2365, 2365], [2384, 2384], [2392, 2401],
3242        [2417, 2432], [2437, 2444], [2447, 2448], [2451, 2472],
3243        [2474, 2480], [2482, 2482], [2486, 2489], [2493, 2493],
3244        [2510, 2510], [2524, 2525], [2527, 2529], [2544, 2545],
3245        [2565, 2570], [2575, 2576], [2579, 2600], [2602, 2608],
3246        [2610, 2611], [2613, 2614], [2616, 2617], [2649, 2652],
3247        [2654, 2654], [2674, 2676], [2693, 2701], [2703, 2705],
3248        [2707, 2728], [2730, 2736], [2738, 2739], [2741, 2745],
3249        [2749, 2749], [2768, 2768], [2784, 2785], [2809, 2809],
3250        [2821, 2828], [2831, 2832], [2835, 2856], [2858, 2864],
3251        [2866, 2867], [2869, 2873], [2877, 2877], [2908, 2909],
3252        [2911, 2913], [2929, 2929], [2947, 2947], [2949, 2954],
3253        [2958, 2960], [2962, 2965], [2969, 2970], [2972, 2972],
3254        [2974, 2975], [2979, 2980], [2984, 2986], [2990, 3001],
3255        [3024, 3024], [3077, 3084], [3086, 3088], [3090, 3112],
3256        [3114, 3129], [3133, 3133], [3160, 3162], [3168, 3169],
3257        [3205, 3212], [3214, 3216], [3218, 3240], [3242, 3251],
3258        [3253, 3257], [3261, 3261], [3294, 3294], [3296, 3297],
3259        [3313, 3314], [3333, 3340], [3342, 3344], [3346, 3386],
3260        [3389, 3389], [3406, 3406], [3423, 3425], [3450, 3455],
3261        [3461, 3478], [3482, 3505], [3507, 3515], [3517, 3517],
3262        [3520, 3526], [3585, 3632], [3634, 3634], [3648, 3654],
3263        [3713, 3714], [3716, 3716], [3719, 3720], [3722, 3722],
3264        [3725, 3725], [3732, 3735], [3737, 3743], [3745, 3747],
3265        [3749, 3749], [3751, 3751], [3754, 3755], [3757, 3760],
3266        [3762, 3762], [3773, 3773], [3776, 3780], [3782, 3782],
3267        [3804, 3807], [3840, 3840], [3904, 3911], [3913, 3948],
3268        [3976, 3980], [4096, 4138], [4159, 4159], [4176, 4181],
3269        [4186, 4189], [4193, 4193], [4197, 4198], [4206, 4208],
3270        [4213, 4225], [4238, 4238], [4256, 4293], [4295, 4295],
3271        [4301, 4301], [4304, 4346], [4348, 4680], [4682, 4685],
3272        [4688, 4694], [4696, 4696], [4698, 4701], [4704, 4744],
3273        [4746, 4749], [4752, 4784], [4786, 4789], [4792, 4798],
3274        [4800, 4800], [4802, 4805], [4808, 4822], [4824, 4880],
3275        [4882, 4885], [4888, 4954], [4992, 5007], [5024, 5109],
3276        [5112, 5117], [5121, 5740], [5743, 5759], [5761, 5786],
3277        [5792, 5866], [5870, 5880], [5888, 5900], [5902, 5905],
3278        [5920, 5937], [5952, 5969], [5984, 5996], [5998, 6000],
3279        [6016, 6067], [6103, 6103], [6108, 6108], [6176, 6263],
3280        [6272, 6312], [6314, 6314], [6320, 6389], [6400, 6430],
3281        [6480, 6509], [6512, 6516], [6528, 6571], [6576, 6601],
3282        [6656, 6678], [6688, 6740], [6823, 6823], [6917, 6963],
3283        [6981, 6987], [7043, 7072], [7086, 7087], [7098, 7141],
3284        [7168, 7203], [7245, 7247], [7258, 7293], [7401, 7404],
3285        [7406, 7409], [7413, 7414], [7424, 7615], [7680, 7957],
3286        [7960, 7965], [7968, 8005], [8008, 8013], [8016, 8023],
3287        [8025, 8025], [8027, 8027], [8029, 8029], [8031, 8061],
3288        [8064, 8116], [8118, 8124], [8126, 8126], [8130, 8132],
3289        [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172],
3290        [8178, 8180], [8182, 8188], [8305, 8305], [8319, 8319],
3291        [8336, 8348], [8450, 8450], [8455, 8455], [8458, 8467],
3292        [8469, 8469], [8472, 8477], [8484, 8484], [8486, 8486],
3293        [8488, 8488], [8490, 8505], [8508, 8511], [8517, 8521],
3294        [8526, 8526], [8544, 8584], [11264, 11310], [11312, 11358],
3295        [11360, 11492], [11499, 11502], [11506, 11507], [11520, 11557],
3296        [11559, 11559], [11565, 11565], [11568, 11623], [11631, 11631],
3297        [11648, 11670], [11680, 11686], [11688, 11694], [11696, 11702],
3298        [11704, 11710], [11712, 11718], [11720, 11726], [11728, 11734],
3299        [11736, 11742], [12293, 12295], [12321, 12329], [12337, 12341],
3300        [12344, 12348], [12353, 12438], [12445, 12447], [12449, 12538],
3301        [12540, 12543], [12549, 12589], [12593, 12686], [12704, 12730],
3302        [12784, 12799], [13312, 19893], [19968, 40917], [40960, 42124],
3303        [42192, 42237], [42240, 42508], [42512, 42527], [42538, 42539],
3304        [42560, 42606], [42623, 42653], [42656, 42735], [42775, 42783],
3305        [42786, 42888], [42891, 42925], [42928, 42935], [42999, 43009],
3306        [43011, 43013], [43015, 43018], [43020, 43042], [43072, 43123],
3307        [43138, 43187], [43250, 43255], [43259, 43259], [43261, 43261],
3308        [43274, 43301], [43312, 43334], [43360, 43388], [43396, 43442],
3309        [43471, 43471], [43488, 43492], [43494, 43503], [43514, 43518],
3310        [43520, 43560], [43584, 43586], [43588, 43595], [43616, 43638],
3311        [43642, 43642], [43646, 43695], [43697, 43697], [43701, 43702],
3312        [43705, 43709], [43712, 43712], [43714, 43714], [43739, 43741],
3313        [43744, 43754], [43762, 43764], [43777, 43782], [43785, 43790],
3314        [43793, 43798], [43808, 43814], [43816, 43822], [43824, 43866],
3315        [43868, 43877], [43888, 44002], [44032, 55203], [55216, 55238],
3316        [55243, 55291], [63744, 64109], [64112, 64217], [64256, 64262],
3317        [64275, 64279], [64285, 64285], [64287, 64296], [64298, 64310],
3318        [64312, 64316], [64318, 64318], [64320, 64321], [64323, 64324],
3319        [64326, 64433], [64467, 64605], [64612, 64829], [64848, 64911],
3320        [64914, 64967], [65008, 65017], [65137, 65137], [65139, 65139],
3321        [65143, 65143], [65145, 65145], [65147, 65147], [65149, 65149],
3322        [65151, 65276], [65313, 65338], [65345, 65370], [65382, 65437],
3323        [65440, 65470], [65474, 65479], [65482, 65487], [65490, 65495],
3324        [65498, 65500], [65536, 65547], [65549, 65574], [65576, 65594],
3325        [65596, 65597], [65599, 65613], [65616, 65629], [65664, 65786],
3326        [65856, 65908], [66176, 66204], [66208, 66256], [66304, 66335],
3327        [66352, 66378], [66384, 66421], [66432, 66461], [66464, 66499],
3328        [66504, 66511], [66513, 66517], [66560, 66717], [66816, 66855],
3329        [66864, 66915], [67072, 67382], [67392, 67413], [67424, 67431],
3330        [67584, 67589], [67592, 67592], [67594, 67637], [67639, 67640],
3331        [67644, 67644], [67647, 67669], [67680, 67702], [67712, 67742],
3332        [67808, 67826], [67828, 67829], [67840, 67861], [67872, 67897],
3333        [67968, 68023], [68030, 68031], [68096, 68096], [68112, 68115],
3334        [68117, 68119], [68121, 68147], [68192, 68220], [68224, 68252],
3335        [68288, 68295], [68297, 68324], [68352, 68405], [68416, 68437],
3336        [68448, 68466], [68480, 68497], [68608, 68680], [68736, 68786],
3337        [68800, 68850], [69635, 69687], [69763, 69807], [69840, 69864],
3338        [69891, 69926], [69968, 70002], [70006, 70006], [70019, 70066],
3339        [70081, 70084], [70106, 70106], [70108, 70108], [70144, 70161],
3340        [70163, 70187], [70272, 70278], [70280, 70280], [70282, 70285],
3341        [70287, 70301], [70303, 70312], [70320, 70366], [70405, 70412],
3342        [70415, 70416], [70419, 70440], [70442, 70448], [70450, 70451],
3343        [70453, 70457], [70461, 70461], [70480, 70480], [70493, 70497],
3344        [70784, 70831], [70852, 70853], [70855, 70855], [71040, 71086],
3345        [71128, 71131], [71168, 71215], [71236, 71236], [71296, 71338],
3346        [71424, 71449], [71840, 71903], [71935, 71935], [72384, 72440],
3347        [73728, 74649], [74752, 74862], [74880, 75075], [77824, 78894],
3348        [82944, 83526], [92160, 92728], [92736, 92766], [92880, 92909],
3349        [92928, 92975], [92992, 92995], [93027, 93047], [93053, 93071],
3350        [93952, 94020], [94032, 94032], [94099, 94111], [110592, 110593],
3351        [113664, 113770], [113776, 113788], [113792, 113800],
3352        [113808, 113817], [119808, 119892], [119894, 119964],
3353        [119966, 119967], [119970, 119970], [119973, 119974],
3354        [119977, 119980], [119982, 119993], [119995, 119995],
3355        [119997, 120003], [120005, 120069], [120071, 120074],
3356        [120077, 120084], [120086, 120092], [120094, 120121],
3357        [120123, 120126], [120128, 120132], [120134, 120134],
3358        [120138, 120144], [120146, 120485], [120488, 120512],
3359        [120514, 120538], [120540, 120570], [120572, 120596],
3360        [120598, 120628], [120630, 120654], [120656, 120686],
3361        [120688, 120712], [120714, 120744], [120746, 120770],
3362        [120772, 120779], [124928, 125124], [126464, 126467],
3363        [126469, 126495], [126497, 126498], [126500, 126500],
3364        [126503, 126503], [126505, 126514], [126516, 126519],
3365        [126521, 126521], [126523, 126523], [126530, 126530],
3366        [126535, 126535], [126537, 126537], [126539, 126539],
3367        [126541, 126543], [126545, 126546], [126548, 126548],
3368        [126551, 126551], [126553, 126553], [126555, 126555],
3369        [126557, 126557], [126559, 126559], [126561, 126562],
3370        [126564, 126564], [126567, 126570], [126572, 126578],
3371        [126580, 126583], [126585, 126588], [126590, 126590],
3372        [126592, 126601], [126603, 126619], [126625, 126627],
3373        [126629, 126633], [126635, 126651], [131072, 173782],
3374        [173824, 177972], [177984, 178205], [178208, 183969],
3375        [194560, 195101]**/
3376        const UnicodeSet codepoint_set
3377            {{{Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Full, 14},
3378              {Mixed, 2}, {Empty, 3}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
3379              {Full, 4}, {Mixed, 1}, {Full, 4}, {Mixed, 4}, {Empty, 1},
3380              {Mixed, 2}, {Empty, 1}, {Full, 1}, {Mixed, 2}, {Full, 2},
3381              {Mixed, 5}, {Full, 2}, {Mixed, 6}, {Empty, 2}, {Mixed, 1},
3382              {Empty, 2}, {Mixed, 23}, {Empty, 1}, {Mixed, 15}, {Empty, 1},
3383              {Mixed, 3}, {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 1},
3384              {Empty, 1}, {Mixed, 3}, {Empty, 3}, {Full, 1}, {Mixed, 4},
3385              {Full, 1}, {Mixed, 2}, {Full, 10}, {Mixed, 1}, {Full, 1},
3386              {Mixed, 3}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
3387              {Empty, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 2}, {Full, 18},
3388              {Mixed, 2}, {Full, 2}, {Mixed, 5}, {Full, 1}, {Mixed, 2},
3389              {Empty, 2}, {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
3390              {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Full, 1},
3391              {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
3392              {Empty, 2}, {Mixed, 1}, {Empty, 2}, {Mixed, 3}, {Empty, 1},
3393              {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
3394              {Empty, 3}, {Mixed, 1}, {Full, 6}, {Empty, 2}, {Full, 8},
3395              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 3},
3396              {Empty, 3}, {Mixed, 2}, {Empty, 3}, {Mixed, 3}, {Full, 1},
3397              {Mixed, 1}, {Empty, 83}, {Full, 1}, {Mixed, 2}, {Full, 4},
3398              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 4},
3399              {Empty, 17}, {Mixed, 3}, {Full, 1}, {Mixed, 2}, {Full, 1},
3400              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 1},
3401              {Empty, 16}, {Full, 205}, {Mixed, 1}, {Empty, 2}, {Full, 654},
3402              {Mixed, 1}, {Empty, 1}, {Full, 36}, {Mixed, 1}, {Empty, 1},
3403              {Mixed, 2}, {Full, 8}, {Mixed, 2}, {Full, 1}, {Mixed, 2},
3404              {Full, 2}, {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Empty, 1},
3405              {Mixed, 3}, {Full, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 9},
3406              {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 7}, {Full, 3},
3407              {Mixed, 1}, {Full, 349}, {Mixed, 3}, {Empty, 264}, {Full, 11},
3408              {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3},
3409              {Full, 2}, {Mixed, 2}, {Full, 3}, {Mixed, 2}, {Full, 5},
3410              {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 2},
3411              {Empty, 3}, {Mixed, 1}, {Full, 3}, {Mixed, 1}, {Empty, 1},
3412              {Mixed, 6}, {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Full, 3},
3413              {Mixed, 1}, {Empty, 2}, {Full, 1}, {Mixed, 1}, {Empty, 8},
3414              {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 1}, {Full, 1},
3415              {Mixed, 4}, {Full, 1}, {Mixed, 1}, {Empty, 1}, {Full, 4},
3416              {Mixed, 1}, {Empty, 3}, {Full, 1}, {Mixed, 1}, {Full, 1},
3417              {Mixed, 1}, {Empty, 4}, {Full, 9}, {Mixed, 3}, {Empty, 4},
3418              {Mixed, 5}, {Empty, 2}, {Mixed, 3}, {Empty, 2}, {Full, 1},
3419              {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
3420              {Empty, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Empty, 3},
3421              {Full, 2}, {Mixed, 1}, {Empty, 1}, {Full, 1}, {Mixed, 1},
3422              {Full, 1}, {Mixed, 1}, {Empty, 24}, {Mixed, 2}, {Empty, 2},
3423              {Mixed, 11}, {Empty, 1}, {Mixed, 2}, {Empty, 2}, {Mixed, 3},
3424              {Empty, 1}, {Mixed, 4}, {Empty, 8}, {Full, 1}, {Mixed, 2},
3425              {Empty, 5}, {Full, 1}, {Mixed, 2}, {Empty, 1}, {Full, 1},
3426              {Mixed, 2}, {Empty, 1}, {Full, 1}, {Mixed, 1}, {Empty, 2},
3427              {Mixed, 1}, {Empty, 12}, {Full, 2}, {Mixed, 1}, {Empty, 14},
3428              {Full, 1}, {Mixed, 1}, {Empty, 40}, {Full, 28}, {Mixed, 1},
3429              {Empty, 3}, {Full, 3}, {Mixed, 1}, {Full, 6}, {Mixed, 1},
3430              {Empty, 85}, {Full, 33}, {Mixed, 1}, {Empty, 126}, {Full, 18},
3431              {Mixed, 1}, {Empty, 269}, {Full, 17}, {Mixed, 2}, {Empty, 3},
3432              {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Empty, 27}, {Full, 2},
3433              {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 515}, {Mixed, 1},
3434              {Empty, 95}, {Full, 3}, {Mixed, 2}, {Empty, 187}, {Full, 2},
3435              {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 3},
3436              {Full, 10}, {Mixed, 10}, {Empty, 129}, {Full, 6}, {Mixed, 1},
3437              {Empty, 41}, {Mixed, 6}, {Empty, 138}, {Full, 1334},
3438              {Mixed, 1}, {Empty, 1}, {Full, 129}, {Mixed, 1}, {Full, 6},
3439              {Mixed, 1}, {Full, 180}, {Mixed, 1}, {Empty, 330}, {Full, 16},
3440              {Mixed, 1}, {Empty, 28719}},
3441             {0x07fffffe, 0x07fffffe, 0x04200400, 0xff7fffff, 0xff7fffff,
3442              0x0003ffc3, 0x0000501f, 0xb8df0000, 0xffffd740, 0xfffffffb,
3443              0xffbfffff, 0xfffffc03, 0xfffeffff, 0x027fffff, 0xfffffffe,
3444              0x000000ff, 0xffff0000, 0x000707ff, 0x000007ff, 0xfffec000,
3445              0x002fffff, 0x9c00c060, 0xfffd0000, 0x0000ffff, 0xffffe000,
3446              0x0002003f, 0xfffffc00, 0x043007ff, 0x043fffff, 0x00000110,
3447              0x01ffffff, 0x001fffff, 0xfffffff0, 0x23ffffff, 0xff010000,
3448              0xfffe0003, 0xfff99fe1, 0x23c5fdff, 0xb0004000, 0x00030003,
3449              0xfff987e0, 0x036dfdff, 0x5e000000, 0x001c0000, 0xfffbbfe0,
3450              0x23edfdff, 0x00010000, 0x02000003, 0xfff99fe0, 0x23edfdff,
3451              0xb0000000, 0x00020003, 0xd63dc7e8, 0x03ffc718, 0x00010000,
3452              0xfffddfe0, 0x23fffdff, 0x07000000, 0x00000003, 0xfffddfe0,
3453              0x23effdff, 0x40000000, 0x00060003, 0xfffddfe0, 0x27ffffff,
3454              0x80004000, 0xfc000003, 0xfc7fffe0, 0x2ffbffff, 0x0000007f,
3455              0xfffffffe, 0x0005ffff, 0x0000007f, 0xfef02596, 0x2005ecae,
3456              0xf000005f, 0x00000001, 0xfffffeff, 0x00001fff, 0x00001f00,
3457              0x800007ff, 0x3c3f0000, 0xffe1c062, 0x00004003, 0xffff20bf,
3458              0xf7ffffff, 0x3d7f3dff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d,
3459              0xff3dffff, 0x07ffffff, 0x0000ffff, 0x3f3fffff, 0xfffffffe,
3460              0xffff9fff, 0x07fffffe, 0x01ffc7ff, 0x0003dfff, 0x0003ffff,
3461              0x0003ffff, 0x0001dfff, 0x000fffff, 0x10800000, 0x00ffffff,
3462              0xffff05ff, 0x003fffff, 0x7fffffff, 0xffff0000, 0x001f3fff,
3463              0xffff0fff, 0x000003ff, 0x007fffff, 0x001fffff, 0x00000080,
3464              0xffffffe0, 0x000fffff, 0x00000fe0, 0xfffffff8, 0xfc00c001,
3465              0x0000003f, 0x0000000f, 0xfc00e000, 0x3fffffff, 0x0063de00,
3466              0x3f3fffff, 0xaaff3f3f, 0x3fffffff, 0x5fdfffff, 0x0fcf1fdc,
3467              0x1fdc1fff, 0x80020000, 0x1fff0000, 0x3f2ffc84, 0xf3fffd50,
3468              0x000043e0, 0x000001ff, 0xffff7fff, 0x7fffffff, 0x000c781f,
3469              0xffff20bf, 0x000080ff, 0x007fffff, 0x7f7f7f7f, 0x7f7f7f7f,
3470              0x000000e0, 0x1f3e03fe, 0xfffffffe, 0xe07fffff, 0xfffffffe,
3471              0xf7ffffff, 0xffffffe0, 0xfffe3fff, 0x00007fff, 0x07ffffff,
3472              0xffff0000, 0x003fffff, 0x003fffff, 0x00001fff, 0xffff0000,
3473              0x3fffffff, 0xffff1fff, 0x00000c00, 0x80007fff, 0x3fffffff,
3474              0x0000ffff, 0xff800000, 0xfffffffc, 0xfffff9ff, 0x00ff3fff,
3475              0xff800000, 0xfffff7bb, 0x00000007, 0x000fffff, 0xfffffffc,
3476              0x000fffff, 0x28fc0000, 0xfffffc00, 0xffff003f, 0x0000007f,
3477              0x1fffffff, 0xfffffff0, 0x0007ffff, 0x00008000, 0x7c00ffdf,
3478              0x000001ff, 0x00000ff7, 0xc47fffff, 0x3e62ffff, 0x38000005,
3479              0x001c07ff, 0x007e7e7e, 0xffff7f7f, 0xf7ffffff, 0xffff003f,
3480              0x00000007, 0xffff000f, 0xfffff87f, 0x0fffffff, 0xffff3fff,
3481              0x03ffffff, 0xa0f8007f, 0x5f7ffdff, 0xffffffdb, 0x0003ffff,
3482              0xfff80000, 0x3fffffff, 0xfffffff0, 0x3fffffff, 0xffff0000,
3483              0xfffcffff, 0x000000ff, 0x03ff0000, 0xaa8a0000, 0x1fffffff,
3484              0x07fffffe, 0x07fffffe, 0xffffffc0, 0x3fffffff, 0x7fffffff,
3485              0x1cfcfcfc, 0xffffefff, 0xb7ffff7f, 0x3fff3fff, 0x07ffffff,
3486              0x001fffff, 0x1fffffff, 0x0001ffff, 0xffff0000, 0xffff07ff,
3487              0x003fffff, 0x3fffffff, 0x003eff0f, 0x3fffffff, 0xffff00ff,
3488              0x0000000f, 0x007fffff, 0x003fffff, 0x000000ff, 0xfffffd3f,
3489              0x91bfffff, 0x003fffff, 0x007fffff, 0x7fffffff, 0x0037ffff,
3490              0x003fffff, 0x03ffffff, 0xc0ffffff, 0xfeef0001, 0x000fffff,
3491              0x1fffffff, 0x1fffffff, 0xfffffeff, 0x0000001f, 0x003fffff,
3492              0x003fffff, 0x0007ffff, 0x0003ffff, 0x000001ff, 0x0007ffff,
3493              0x0007ffff, 0xfffffff8, 0x00ffffff, 0xfffffff8, 0x0000ffff,
3494              0xffff0000, 0x000001ff, 0xfffffff8, 0x0000007f, 0xffff0000,
3495              0x0047ffff, 0xfffffff8, 0x0007ffff, 0x1400001e, 0xfffbffff,
3496              0x00000fff, 0xbfffbd7f, 0xffff01ff, 0x7fffffff, 0xfff99fe0,
3497              0x23edfdff, 0xe0010000, 0x00000003, 0x0000ffff, 0x000000b0,
3498              0x00007fff, 0x0f000000, 0x0000ffff, 0x00000010, 0x000007ff,
3499              0x03ffffff, 0x80000000, 0x01ffffff, 0x03ffffff, 0x00007fff,
3500              0x0000000f, 0x00007fff, 0x0000007f, 0x01ffffff, 0x7fffffff,
3501              0xffff0000, 0x00003fff, 0x0000ffff, 0x0000000f, 0xe0fffff8,
3502              0x0000ffff, 0x0001001f, 0xfff80000, 0x00000003, 0x1fff07ff,
3503              0x03ff01ff, 0xffdfffff, 0xdfffffff, 0xebffde64, 0xffffffef,
3504              0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffff3f, 0xf7fffffd,
3505              0xf7ffffff, 0xffdfffff, 0xffdfffff, 0xffff7fff, 0xffff7fff,
3506              0xfffffdff, 0xfffffdff, 0x00000ff7, 0x0000001f, 0xffffffef,
3507              0x0af7fe96, 0xaa96ea84, 0x5ef7f796, 0x0ffffbff, 0x0ffffbee,
3508              0x007fffff, 0x001fffff, 0x3fffffff, 0x00000003, 0x3fffffff}};
3509        static BinaryPropertyObject property_object{XIDS, codepoint_set};
3510    }
3511}
3512
3513
3514#endif
Note: See TracBrowser for help on using the repository browser.