REAL
Regular Expression Algorithmic Library — constexpr C++20 regex
Loading...
Searching...
No Matches
unicode_property.hpp
Go to the documentation of this file.
1
12#ifndef REAL_UNICODE_PROPERTY_HPP
13#define REAL_UNICODE_PROPERTY_HPP
14
15// Internal — do not include directly.
16// Users: #include <real/real.hpp> (or the documented opt-ins <real/dfa.hpp>, <real/std/regex.hpp>).
17
18#include "real/version.hpp"
19
20#include <cstddef>
21#include <cstdint>
22#include <span>
23#include <string_view>
24
25#include "real/core/program.hpp" // code_range
26#include "real/unicode/unicode_props.hpp" // cp_in_ranges (contract-neutral binary search)
27
28namespace real::detail {
29
31 inline constexpr const char* unicode_property_unidata_version {"16.0.0"};
32
34 inline constexpr code_range gc_Lu_ranges[] {
35 {0x0041, 0x005A},
36 {0x00C0, 0x00D6},
37 {0x00D8, 0x00DE},
38 {0x0100, 0x0100},
39 {0x0102, 0x0102},
40 {0x0104, 0x0104},
41 {0x0106, 0x0106},
42 {0x0108, 0x0108},
43 {0x010A, 0x010A},
44 {0x010C, 0x010C},
45 {0x010E, 0x010E},
46 {0x0110, 0x0110},
47 {0x0112, 0x0112},
48 {0x0114, 0x0114},
49 {0x0116, 0x0116},
50 {0x0118, 0x0118},
51 {0x011A, 0x011A},
52 {0x011C, 0x011C},
53 {0x011E, 0x011E},
54 {0x0120, 0x0120},
55 {0x0122, 0x0122},
56 {0x0124, 0x0124},
57 {0x0126, 0x0126},
58 {0x0128, 0x0128},
59 {0x012A, 0x012A},
60 {0x012C, 0x012C},
61 {0x012E, 0x012E},
62 {0x0130, 0x0130},
63 {0x0132, 0x0132},
64 {0x0134, 0x0134},
65 {0x0136, 0x0136},
66 {0x0139, 0x0139},
67 {0x013B, 0x013B},
68 {0x013D, 0x013D},
69 {0x013F, 0x013F},
70 {0x0141, 0x0141},
71 {0x0143, 0x0143},
72 {0x0145, 0x0145},
73 {0x0147, 0x0147},
74 {0x014A, 0x014A},
75 {0x014C, 0x014C},
76 {0x014E, 0x014E},
77 {0x0150, 0x0150},
78 {0x0152, 0x0152},
79 {0x0154, 0x0154},
80 {0x0156, 0x0156},
81 {0x0158, 0x0158},
82 {0x015A, 0x015A},
83 {0x015C, 0x015C},
84 {0x015E, 0x015E},
85 {0x0160, 0x0160},
86 {0x0162, 0x0162},
87 {0x0164, 0x0164},
88 {0x0166, 0x0166},
89 {0x0168, 0x0168},
90 {0x016A, 0x016A},
91 {0x016C, 0x016C},
92 {0x016E, 0x016E},
93 {0x0170, 0x0170},
94 {0x0172, 0x0172},
95 {0x0174, 0x0174},
96 {0x0176, 0x0176},
97 {0x0178, 0x0179},
98 {0x017B, 0x017B},
99 {0x017D, 0x017D},
100 {0x0181, 0x0182},
101 {0x0184, 0x0184},
102 {0x0186, 0x0187},
103 {0x0189, 0x018B},
104 {0x018E, 0x0191},
105 {0x0193, 0x0194},
106 {0x0196, 0x0198},
107 {0x019C, 0x019D},
108 {0x019F, 0x01A0},
109 {0x01A2, 0x01A2},
110 {0x01A4, 0x01A4},
111 {0x01A6, 0x01A7},
112 {0x01A9, 0x01A9},
113 {0x01AC, 0x01AC},
114 {0x01AE, 0x01AF},
115 {0x01B1, 0x01B3},
116 {0x01B5, 0x01B5},
117 {0x01B7, 0x01B8},
118 {0x01BC, 0x01BC},
119 {0x01C4, 0x01C4},
120 {0x01C7, 0x01C7},
121 {0x01CA, 0x01CA},
122 {0x01CD, 0x01CD},
123 {0x01CF, 0x01CF},
124 {0x01D1, 0x01D1},
125 {0x01D3, 0x01D3},
126 {0x01D5, 0x01D5},
127 {0x01D7, 0x01D7},
128 {0x01D9, 0x01D9},
129 {0x01DB, 0x01DB},
130 {0x01DE, 0x01DE},
131 {0x01E0, 0x01E0},
132 {0x01E2, 0x01E2},
133 {0x01E4, 0x01E4},
134 {0x01E6, 0x01E6},
135 {0x01E8, 0x01E8},
136 {0x01EA, 0x01EA},
137 {0x01EC, 0x01EC},
138 {0x01EE, 0x01EE},
139 {0x01F1, 0x01F1},
140 {0x01F4, 0x01F4},
141 {0x01F6, 0x01F8},
142 {0x01FA, 0x01FA},
143 {0x01FC, 0x01FC},
144 {0x01FE, 0x01FE},
145 {0x0200, 0x0200},
146 {0x0202, 0x0202},
147 {0x0204, 0x0204},
148 {0x0206, 0x0206},
149 {0x0208, 0x0208},
150 {0x020A, 0x020A},
151 {0x020C, 0x020C},
152 {0x020E, 0x020E},
153 {0x0210, 0x0210},
154 {0x0212, 0x0212},
155 {0x0214, 0x0214},
156 {0x0216, 0x0216},
157 {0x0218, 0x0218},
158 {0x021A, 0x021A},
159 {0x021C, 0x021C},
160 {0x021E, 0x021E},
161 {0x0220, 0x0220},
162 {0x0222, 0x0222},
163 {0x0224, 0x0224},
164 {0x0226, 0x0226},
165 {0x0228, 0x0228},
166 {0x022A, 0x022A},
167 {0x022C, 0x022C},
168 {0x022E, 0x022E},
169 {0x0230, 0x0230},
170 {0x0232, 0x0232},
171 {0x023A, 0x023B},
172 {0x023D, 0x023E},
173 {0x0241, 0x0241},
174 {0x0243, 0x0246},
175 {0x0248, 0x0248},
176 {0x024A, 0x024A},
177 {0x024C, 0x024C},
178 {0x024E, 0x024E},
179 {0x0370, 0x0370},
180 {0x0372, 0x0372},
181 {0x0376, 0x0376},
182 {0x037F, 0x037F},
183 {0x0386, 0x0386},
184 {0x0388, 0x038A},
185 {0x038C, 0x038C},
186 {0x038E, 0x038F},
187 {0x0391, 0x03A1},
188 {0x03A3, 0x03AB},
189 {0x03CF, 0x03CF},
190 {0x03D2, 0x03D4},
191 {0x03D8, 0x03D8},
192 {0x03DA, 0x03DA},
193 {0x03DC, 0x03DC},
194 {0x03DE, 0x03DE},
195 {0x03E0, 0x03E0},
196 {0x03E2, 0x03E2},
197 {0x03E4, 0x03E4},
198 {0x03E6, 0x03E6},
199 {0x03E8, 0x03E8},
200 {0x03EA, 0x03EA},
201 {0x03EC, 0x03EC},
202 {0x03EE, 0x03EE},
203 {0x03F4, 0x03F4},
204 {0x03F7, 0x03F7},
205 {0x03F9, 0x03FA},
206 {0x03FD, 0x042F},
207 {0x0460, 0x0460},
208 {0x0462, 0x0462},
209 {0x0464, 0x0464},
210 {0x0466, 0x0466},
211 {0x0468, 0x0468},
212 {0x046A, 0x046A},
213 {0x046C, 0x046C},
214 {0x046E, 0x046E},
215 {0x0470, 0x0470},
216 {0x0472, 0x0472},
217 {0x0474, 0x0474},
218 {0x0476, 0x0476},
219 {0x0478, 0x0478},
220 {0x047A, 0x047A},
221 {0x047C, 0x047C},
222 {0x047E, 0x047E},
223 {0x0480, 0x0480},
224 {0x048A, 0x048A},
225 {0x048C, 0x048C},
226 {0x048E, 0x048E},
227 {0x0490, 0x0490},
228 {0x0492, 0x0492},
229 {0x0494, 0x0494},
230 {0x0496, 0x0496},
231 {0x0498, 0x0498},
232 {0x049A, 0x049A},
233 {0x049C, 0x049C},
234 {0x049E, 0x049E},
235 {0x04A0, 0x04A0},
236 {0x04A2, 0x04A2},
237 {0x04A4, 0x04A4},
238 {0x04A6, 0x04A6},
239 {0x04A8, 0x04A8},
240 {0x04AA, 0x04AA},
241 {0x04AC, 0x04AC},
242 {0x04AE, 0x04AE},
243 {0x04B0, 0x04B0},
244 {0x04B2, 0x04B2},
245 {0x04B4, 0x04B4},
246 {0x04B6, 0x04B6},
247 {0x04B8, 0x04B8},
248 {0x04BA, 0x04BA},
249 {0x04BC, 0x04BC},
250 {0x04BE, 0x04BE},
251 {0x04C0, 0x04C1},
252 {0x04C3, 0x04C3},
253 {0x04C5, 0x04C5},
254 {0x04C7, 0x04C7},
255 {0x04C9, 0x04C9},
256 {0x04CB, 0x04CB},
257 {0x04CD, 0x04CD},
258 {0x04D0, 0x04D0},
259 {0x04D2, 0x04D2},
260 {0x04D4, 0x04D4},
261 {0x04D6, 0x04D6},
262 {0x04D8, 0x04D8},
263 {0x04DA, 0x04DA},
264 {0x04DC, 0x04DC},
265 {0x04DE, 0x04DE},
266 {0x04E0, 0x04E0},
267 {0x04E2, 0x04E2},
268 {0x04E4, 0x04E4},
269 {0x04E6, 0x04E6},
270 {0x04E8, 0x04E8},
271 {0x04EA, 0x04EA},
272 {0x04EC, 0x04EC},
273 {0x04EE, 0x04EE},
274 {0x04F0, 0x04F0},
275 {0x04F2, 0x04F2},
276 {0x04F4, 0x04F4},
277 {0x04F6, 0x04F6},
278 {0x04F8, 0x04F8},
279 {0x04FA, 0x04FA},
280 {0x04FC, 0x04FC},
281 {0x04FE, 0x04FE},
282 {0x0500, 0x0500},
283 {0x0502, 0x0502},
284 {0x0504, 0x0504},
285 {0x0506, 0x0506},
286 {0x0508, 0x0508},
287 {0x050A, 0x050A},
288 {0x050C, 0x050C},
289 {0x050E, 0x050E},
290 {0x0510, 0x0510},
291 {0x0512, 0x0512},
292 {0x0514, 0x0514},
293 {0x0516, 0x0516},
294 {0x0518, 0x0518},
295 {0x051A, 0x051A},
296 {0x051C, 0x051C},
297 {0x051E, 0x051E},
298 {0x0520, 0x0520},
299 {0x0522, 0x0522},
300 {0x0524, 0x0524},
301 {0x0526, 0x0526},
302 {0x0528, 0x0528},
303 {0x052A, 0x052A},
304 {0x052C, 0x052C},
305 {0x052E, 0x052E},
306 {0x0531, 0x0556},
307 {0x10A0, 0x10C5},
308 {0x10C7, 0x10C7},
309 {0x10CD, 0x10CD},
310 {0x13A0, 0x13F5},
311 {0x1C89, 0x1C89},
312 {0x1C90, 0x1CBA},
313 {0x1CBD, 0x1CBF},
314 {0x1E00, 0x1E00},
315 {0x1E02, 0x1E02},
316 {0x1E04, 0x1E04},
317 {0x1E06, 0x1E06},
318 {0x1E08, 0x1E08},
319 {0x1E0A, 0x1E0A},
320 {0x1E0C, 0x1E0C},
321 {0x1E0E, 0x1E0E},
322 {0x1E10, 0x1E10},
323 {0x1E12, 0x1E12},
324 {0x1E14, 0x1E14},
325 {0x1E16, 0x1E16},
326 {0x1E18, 0x1E18},
327 {0x1E1A, 0x1E1A},
328 {0x1E1C, 0x1E1C},
329 {0x1E1E, 0x1E1E},
330 {0x1E20, 0x1E20},
331 {0x1E22, 0x1E22},
332 {0x1E24, 0x1E24},
333 {0x1E26, 0x1E26},
334 {0x1E28, 0x1E28},
335 {0x1E2A, 0x1E2A},
336 {0x1E2C, 0x1E2C},
337 {0x1E2E, 0x1E2E},
338 {0x1E30, 0x1E30},
339 {0x1E32, 0x1E32},
340 {0x1E34, 0x1E34},
341 {0x1E36, 0x1E36},
342 {0x1E38, 0x1E38},
343 {0x1E3A, 0x1E3A},
344 {0x1E3C, 0x1E3C},
345 {0x1E3E, 0x1E3E},
346 {0x1E40, 0x1E40},
347 {0x1E42, 0x1E42},
348 {0x1E44, 0x1E44},
349 {0x1E46, 0x1E46},
350 {0x1E48, 0x1E48},
351 {0x1E4A, 0x1E4A},
352 {0x1E4C, 0x1E4C},
353 {0x1E4E, 0x1E4E},
354 {0x1E50, 0x1E50},
355 {0x1E52, 0x1E52},
356 {0x1E54, 0x1E54},
357 {0x1E56, 0x1E56},
358 {0x1E58, 0x1E58},
359 {0x1E5A, 0x1E5A},
360 {0x1E5C, 0x1E5C},
361 {0x1E5E, 0x1E5E},
362 {0x1E60, 0x1E60},
363 {0x1E62, 0x1E62},
364 {0x1E64, 0x1E64},
365 {0x1E66, 0x1E66},
366 {0x1E68, 0x1E68},
367 {0x1E6A, 0x1E6A},
368 {0x1E6C, 0x1E6C},
369 {0x1E6E, 0x1E6E},
370 {0x1E70, 0x1E70},
371 {0x1E72, 0x1E72},
372 {0x1E74, 0x1E74},
373 {0x1E76, 0x1E76},
374 {0x1E78, 0x1E78},
375 {0x1E7A, 0x1E7A},
376 {0x1E7C, 0x1E7C},
377 {0x1E7E, 0x1E7E},
378 {0x1E80, 0x1E80},
379 {0x1E82, 0x1E82},
380 {0x1E84, 0x1E84},
381 {0x1E86, 0x1E86},
382 {0x1E88, 0x1E88},
383 {0x1E8A, 0x1E8A},
384 {0x1E8C, 0x1E8C},
385 {0x1E8E, 0x1E8E},
386 {0x1E90, 0x1E90},
387 {0x1E92, 0x1E92},
388 {0x1E94, 0x1E94},
389 {0x1E9E, 0x1E9E},
390 {0x1EA0, 0x1EA0},
391 {0x1EA2, 0x1EA2},
392 {0x1EA4, 0x1EA4},
393 {0x1EA6, 0x1EA6},
394 {0x1EA8, 0x1EA8},
395 {0x1EAA, 0x1EAA},
396 {0x1EAC, 0x1EAC},
397 {0x1EAE, 0x1EAE},
398 {0x1EB0, 0x1EB0},
399 {0x1EB2, 0x1EB2},
400 {0x1EB4, 0x1EB4},
401 {0x1EB6, 0x1EB6},
402 {0x1EB8, 0x1EB8},
403 {0x1EBA, 0x1EBA},
404 {0x1EBC, 0x1EBC},
405 {0x1EBE, 0x1EBE},
406 {0x1EC0, 0x1EC0},
407 {0x1EC2, 0x1EC2},
408 {0x1EC4, 0x1EC4},
409 {0x1EC6, 0x1EC6},
410 {0x1EC8, 0x1EC8},
411 {0x1ECA, 0x1ECA},
412 {0x1ECC, 0x1ECC},
413 {0x1ECE, 0x1ECE},
414 {0x1ED0, 0x1ED0},
415 {0x1ED2, 0x1ED2},
416 {0x1ED4, 0x1ED4},
417 {0x1ED6, 0x1ED6},
418 {0x1ED8, 0x1ED8},
419 {0x1EDA, 0x1EDA},
420 {0x1EDC, 0x1EDC},
421 {0x1EDE, 0x1EDE},
422 {0x1EE0, 0x1EE0},
423 {0x1EE2, 0x1EE2},
424 {0x1EE4, 0x1EE4},
425 {0x1EE6, 0x1EE6},
426 {0x1EE8, 0x1EE8},
427 {0x1EEA, 0x1EEA},
428 {0x1EEC, 0x1EEC},
429 {0x1EEE, 0x1EEE},
430 {0x1EF0, 0x1EF0},
431 {0x1EF2, 0x1EF2},
432 {0x1EF4, 0x1EF4},
433 {0x1EF6, 0x1EF6},
434 {0x1EF8, 0x1EF8},
435 {0x1EFA, 0x1EFA},
436 {0x1EFC, 0x1EFC},
437 {0x1EFE, 0x1EFE},
438 {0x1F08, 0x1F0F},
439 {0x1F18, 0x1F1D},
440 {0x1F28, 0x1F2F},
441 {0x1F38, 0x1F3F},
442 {0x1F48, 0x1F4D},
443 {0x1F59, 0x1F59},
444 {0x1F5B, 0x1F5B},
445 {0x1F5D, 0x1F5D},
446 {0x1F5F, 0x1F5F},
447 {0x1F68, 0x1F6F},
448 {0x1FB8, 0x1FBB},
449 {0x1FC8, 0x1FCB},
450 {0x1FD8, 0x1FDB},
451 {0x1FE8, 0x1FEC},
452 {0x1FF8, 0x1FFB},
453 {0x2102, 0x2102},
454 {0x2107, 0x2107},
455 {0x210B, 0x210D},
456 {0x2110, 0x2112},
457 {0x2115, 0x2115},
458 {0x2119, 0x211D},
459 {0x2124, 0x2124},
460 {0x2126, 0x2126},
461 {0x2128, 0x2128},
462 {0x212A, 0x212D},
463 {0x2130, 0x2133},
464 {0x213E, 0x213F},
465 {0x2145, 0x2145},
466 {0x2183, 0x2183},
467 {0x2C00, 0x2C2F},
468 {0x2C60, 0x2C60},
469 {0x2C62, 0x2C64},
470 {0x2C67, 0x2C67},
471 {0x2C69, 0x2C69},
472 {0x2C6B, 0x2C6B},
473 {0x2C6D, 0x2C70},
474 {0x2C72, 0x2C72},
475 {0x2C75, 0x2C75},
476 {0x2C7E, 0x2C80},
477 {0x2C82, 0x2C82},
478 {0x2C84, 0x2C84},
479 {0x2C86, 0x2C86},
480 {0x2C88, 0x2C88},
481 {0x2C8A, 0x2C8A},
482 {0x2C8C, 0x2C8C},
483 {0x2C8E, 0x2C8E},
484 {0x2C90, 0x2C90},
485 {0x2C92, 0x2C92},
486 {0x2C94, 0x2C94},
487 {0x2C96, 0x2C96},
488 {0x2C98, 0x2C98},
489 {0x2C9A, 0x2C9A},
490 {0x2C9C, 0x2C9C},
491 {0x2C9E, 0x2C9E},
492 {0x2CA0, 0x2CA0},
493 {0x2CA2, 0x2CA2},
494 {0x2CA4, 0x2CA4},
495 {0x2CA6, 0x2CA6},
496 {0x2CA8, 0x2CA8},
497 {0x2CAA, 0x2CAA},
498 {0x2CAC, 0x2CAC},
499 {0x2CAE, 0x2CAE},
500 {0x2CB0, 0x2CB0},
501 {0x2CB2, 0x2CB2},
502 {0x2CB4, 0x2CB4},
503 {0x2CB6, 0x2CB6},
504 {0x2CB8, 0x2CB8},
505 {0x2CBA, 0x2CBA},
506 {0x2CBC, 0x2CBC},
507 {0x2CBE, 0x2CBE},
508 {0x2CC0, 0x2CC0},
509 {0x2CC2, 0x2CC2},
510 {0x2CC4, 0x2CC4},
511 {0x2CC6, 0x2CC6},
512 {0x2CC8, 0x2CC8},
513 {0x2CCA, 0x2CCA},
514 {0x2CCC, 0x2CCC},
515 {0x2CCE, 0x2CCE},
516 {0x2CD0, 0x2CD0},
517 {0x2CD2, 0x2CD2},
518 {0x2CD4, 0x2CD4},
519 {0x2CD6, 0x2CD6},
520 {0x2CD8, 0x2CD8},
521 {0x2CDA, 0x2CDA},
522 {0x2CDC, 0x2CDC},
523 {0x2CDE, 0x2CDE},
524 {0x2CE0, 0x2CE0},
525 {0x2CE2, 0x2CE2},
526 {0x2CEB, 0x2CEB},
527 {0x2CED, 0x2CED},
528 {0x2CF2, 0x2CF2},
529 {0xA640, 0xA640},
530 {0xA642, 0xA642},
531 {0xA644, 0xA644},
532 {0xA646, 0xA646},
533 {0xA648, 0xA648},
534 {0xA64A, 0xA64A},
535 {0xA64C, 0xA64C},
536 {0xA64E, 0xA64E},
537 {0xA650, 0xA650},
538 {0xA652, 0xA652},
539 {0xA654, 0xA654},
540 {0xA656, 0xA656},
541 {0xA658, 0xA658},
542 {0xA65A, 0xA65A},
543 {0xA65C, 0xA65C},
544 {0xA65E, 0xA65E},
545 {0xA660, 0xA660},
546 {0xA662, 0xA662},
547 {0xA664, 0xA664},
548 {0xA666, 0xA666},
549 {0xA668, 0xA668},
550 {0xA66A, 0xA66A},
551 {0xA66C, 0xA66C},
552 {0xA680, 0xA680},
553 {0xA682, 0xA682},
554 {0xA684, 0xA684},
555 {0xA686, 0xA686},
556 {0xA688, 0xA688},
557 {0xA68A, 0xA68A},
558 {0xA68C, 0xA68C},
559 {0xA68E, 0xA68E},
560 {0xA690, 0xA690},
561 {0xA692, 0xA692},
562 {0xA694, 0xA694},
563 {0xA696, 0xA696},
564 {0xA698, 0xA698},
565 {0xA69A, 0xA69A},
566 {0xA722, 0xA722},
567 {0xA724, 0xA724},
568 {0xA726, 0xA726},
569 {0xA728, 0xA728},
570 {0xA72A, 0xA72A},
571 {0xA72C, 0xA72C},
572 {0xA72E, 0xA72E},
573 {0xA732, 0xA732},
574 {0xA734, 0xA734},
575 {0xA736, 0xA736},
576 {0xA738, 0xA738},
577 {0xA73A, 0xA73A},
578 {0xA73C, 0xA73C},
579 {0xA73E, 0xA73E},
580 {0xA740, 0xA740},
581 {0xA742, 0xA742},
582 {0xA744, 0xA744},
583 {0xA746, 0xA746},
584 {0xA748, 0xA748},
585 {0xA74A, 0xA74A},
586 {0xA74C, 0xA74C},
587 {0xA74E, 0xA74E},
588 {0xA750, 0xA750},
589 {0xA752, 0xA752},
590 {0xA754, 0xA754},
591 {0xA756, 0xA756},
592 {0xA758, 0xA758},
593 {0xA75A, 0xA75A},
594 {0xA75C, 0xA75C},
595 {0xA75E, 0xA75E},
596 {0xA760, 0xA760},
597 {0xA762, 0xA762},
598 {0xA764, 0xA764},
599 {0xA766, 0xA766},
600 {0xA768, 0xA768},
601 {0xA76A, 0xA76A},
602 {0xA76C, 0xA76C},
603 {0xA76E, 0xA76E},
604 {0xA779, 0xA779},
605 {0xA77B, 0xA77B},
606 {0xA77D, 0xA77E},
607 {0xA780, 0xA780},
608 {0xA782, 0xA782},
609 {0xA784, 0xA784},
610 {0xA786, 0xA786},
611 {0xA78B, 0xA78B},
612 {0xA78D, 0xA78D},
613 {0xA790, 0xA790},
614 {0xA792, 0xA792},
615 {0xA796, 0xA796},
616 {0xA798, 0xA798},
617 {0xA79A, 0xA79A},
618 {0xA79C, 0xA79C},
619 {0xA79E, 0xA79E},
620 {0xA7A0, 0xA7A0},
621 {0xA7A2, 0xA7A2},
622 {0xA7A4, 0xA7A4},
623 {0xA7A6, 0xA7A6},
624 {0xA7A8, 0xA7A8},
625 {0xA7AA, 0xA7AE},
626 {0xA7B0, 0xA7B4},
627 {0xA7B6, 0xA7B6},
628 {0xA7B8, 0xA7B8},
629 {0xA7BA, 0xA7BA},
630 {0xA7BC, 0xA7BC},
631 {0xA7BE, 0xA7BE},
632 {0xA7C0, 0xA7C0},
633 {0xA7C2, 0xA7C2},
634 {0xA7C4, 0xA7C7},
635 {0xA7C9, 0xA7C9},
636 {0xA7CB, 0xA7CC},
637 {0xA7D0, 0xA7D0},
638 {0xA7D6, 0xA7D6},
639 {0xA7D8, 0xA7D8},
640 {0xA7DA, 0xA7DA},
641 {0xA7DC, 0xA7DC},
642 {0xA7F5, 0xA7F5},
643 {0xFF21, 0xFF3A},
644 {0x10400, 0x10427},
645 {0x104B0, 0x104D3},
646 {0x10570, 0x1057A},
647 {0x1057C, 0x1058A},
648 {0x1058C, 0x10592},
649 {0x10594, 0x10595},
650 {0x10C80, 0x10CB2},
651 {0x10D50, 0x10D65},
652 {0x118A0, 0x118BF},
653 {0x16E40, 0x16E5F},
654 {0x1D400, 0x1D419},
655 {0x1D434, 0x1D44D},
656 {0x1D468, 0x1D481},
657 {0x1D49C, 0x1D49C},
658 {0x1D49E, 0x1D49F},
659 {0x1D4A2, 0x1D4A2},
660 {0x1D4A5, 0x1D4A6},
661 {0x1D4A9, 0x1D4AC},
662 {0x1D4AE, 0x1D4B5},
663 {0x1D4D0, 0x1D4E9},
664 {0x1D504, 0x1D505},
665 {0x1D507, 0x1D50A},
666 {0x1D50D, 0x1D514},
667 {0x1D516, 0x1D51C},
668 {0x1D538, 0x1D539},
669 {0x1D53B, 0x1D53E},
670 {0x1D540, 0x1D544},
671 {0x1D546, 0x1D546},
672 {0x1D54A, 0x1D550},
673 {0x1D56C, 0x1D585},
674 {0x1D5A0, 0x1D5B9},
675 {0x1D5D4, 0x1D5ED},
676 {0x1D608, 0x1D621},
677 {0x1D63C, 0x1D655},
678 {0x1D670, 0x1D689},
679 {0x1D6A8, 0x1D6C0},
680 {0x1D6E2, 0x1D6FA},
681 {0x1D71C, 0x1D734},
682 {0x1D756, 0x1D76E},
683 {0x1D790, 0x1D7A8},
684 {0x1D7CA, 0x1D7CA},
685 {0x1E900, 0x1E921},
686 };
687
689 inline constexpr code_range gc_Ll_ranges[] {
690 {0x0061, 0x007A},
691 {0x00B5, 0x00B5},
692 {0x00DF, 0x00F6},
693 {0x00F8, 0x00FF},
694 {0x0101, 0x0101},
695 {0x0103, 0x0103},
696 {0x0105, 0x0105},
697 {0x0107, 0x0107},
698 {0x0109, 0x0109},
699 {0x010B, 0x010B},
700 {0x010D, 0x010D},
701 {0x010F, 0x010F},
702 {0x0111, 0x0111},
703 {0x0113, 0x0113},
704 {0x0115, 0x0115},
705 {0x0117, 0x0117},
706 {0x0119, 0x0119},
707 {0x011B, 0x011B},
708 {0x011D, 0x011D},
709 {0x011F, 0x011F},
710 {0x0121, 0x0121},
711 {0x0123, 0x0123},
712 {0x0125, 0x0125},
713 {0x0127, 0x0127},
714 {0x0129, 0x0129},
715 {0x012B, 0x012B},
716 {0x012D, 0x012D},
717 {0x012F, 0x012F},
718 {0x0131, 0x0131},
719 {0x0133, 0x0133},
720 {0x0135, 0x0135},
721 {0x0137, 0x0138},
722 {0x013A, 0x013A},
723 {0x013C, 0x013C},
724 {0x013E, 0x013E},
725 {0x0140, 0x0140},
726 {0x0142, 0x0142},
727 {0x0144, 0x0144},
728 {0x0146, 0x0146},
729 {0x0148, 0x0149},
730 {0x014B, 0x014B},
731 {0x014D, 0x014D},
732 {0x014F, 0x014F},
733 {0x0151, 0x0151},
734 {0x0153, 0x0153},
735 {0x0155, 0x0155},
736 {0x0157, 0x0157},
737 {0x0159, 0x0159},
738 {0x015B, 0x015B},
739 {0x015D, 0x015D},
740 {0x015F, 0x015F},
741 {0x0161, 0x0161},
742 {0x0163, 0x0163},
743 {0x0165, 0x0165},
744 {0x0167, 0x0167},
745 {0x0169, 0x0169},
746 {0x016B, 0x016B},
747 {0x016D, 0x016D},
748 {0x016F, 0x016F},
749 {0x0171, 0x0171},
750 {0x0173, 0x0173},
751 {0x0175, 0x0175},
752 {0x0177, 0x0177},
753 {0x017A, 0x017A},
754 {0x017C, 0x017C},
755 {0x017E, 0x0180},
756 {0x0183, 0x0183},
757 {0x0185, 0x0185},
758 {0x0188, 0x0188},
759 {0x018C, 0x018D},
760 {0x0192, 0x0192},
761 {0x0195, 0x0195},
762 {0x0199, 0x019B},
763 {0x019E, 0x019E},
764 {0x01A1, 0x01A1},
765 {0x01A3, 0x01A3},
766 {0x01A5, 0x01A5},
767 {0x01A8, 0x01A8},
768 {0x01AA, 0x01AB},
769 {0x01AD, 0x01AD},
770 {0x01B0, 0x01B0},
771 {0x01B4, 0x01B4},
772 {0x01B6, 0x01B6},
773 {0x01B9, 0x01BA},
774 {0x01BD, 0x01BF},
775 {0x01C6, 0x01C6},
776 {0x01C9, 0x01C9},
777 {0x01CC, 0x01CC},
778 {0x01CE, 0x01CE},
779 {0x01D0, 0x01D0},
780 {0x01D2, 0x01D2},
781 {0x01D4, 0x01D4},
782 {0x01D6, 0x01D6},
783 {0x01D8, 0x01D8},
784 {0x01DA, 0x01DA},
785 {0x01DC, 0x01DD},
786 {0x01DF, 0x01DF},
787 {0x01E1, 0x01E1},
788 {0x01E3, 0x01E3},
789 {0x01E5, 0x01E5},
790 {0x01E7, 0x01E7},
791 {0x01E9, 0x01E9},
792 {0x01EB, 0x01EB},
793 {0x01ED, 0x01ED},
794 {0x01EF, 0x01F0},
795 {0x01F3, 0x01F3},
796 {0x01F5, 0x01F5},
797 {0x01F9, 0x01F9},
798 {0x01FB, 0x01FB},
799 {0x01FD, 0x01FD},
800 {0x01FF, 0x01FF},
801 {0x0201, 0x0201},
802 {0x0203, 0x0203},
803 {0x0205, 0x0205},
804 {0x0207, 0x0207},
805 {0x0209, 0x0209},
806 {0x020B, 0x020B},
807 {0x020D, 0x020D},
808 {0x020F, 0x020F},
809 {0x0211, 0x0211},
810 {0x0213, 0x0213},
811 {0x0215, 0x0215},
812 {0x0217, 0x0217},
813 {0x0219, 0x0219},
814 {0x021B, 0x021B},
815 {0x021D, 0x021D},
816 {0x021F, 0x021F},
817 {0x0221, 0x0221},
818 {0x0223, 0x0223},
819 {0x0225, 0x0225},
820 {0x0227, 0x0227},
821 {0x0229, 0x0229},
822 {0x022B, 0x022B},
823 {0x022D, 0x022D},
824 {0x022F, 0x022F},
825 {0x0231, 0x0231},
826 {0x0233, 0x0239},
827 {0x023C, 0x023C},
828 {0x023F, 0x0240},
829 {0x0242, 0x0242},
830 {0x0247, 0x0247},
831 {0x0249, 0x0249},
832 {0x024B, 0x024B},
833 {0x024D, 0x024D},
834 {0x024F, 0x0293},
835 {0x0295, 0x02AF},
836 {0x0371, 0x0371},
837 {0x0373, 0x0373},
838 {0x0377, 0x0377},
839 {0x037B, 0x037D},
840 {0x0390, 0x0390},
841 {0x03AC, 0x03CE},
842 {0x03D0, 0x03D1},
843 {0x03D5, 0x03D7},
844 {0x03D9, 0x03D9},
845 {0x03DB, 0x03DB},
846 {0x03DD, 0x03DD},
847 {0x03DF, 0x03DF},
848 {0x03E1, 0x03E1},
849 {0x03E3, 0x03E3},
850 {0x03E5, 0x03E5},
851 {0x03E7, 0x03E7},
852 {0x03E9, 0x03E9},
853 {0x03EB, 0x03EB},
854 {0x03ED, 0x03ED},
855 {0x03EF, 0x03F3},
856 {0x03F5, 0x03F5},
857 {0x03F8, 0x03F8},
858 {0x03FB, 0x03FC},
859 {0x0430, 0x045F},
860 {0x0461, 0x0461},
861 {0x0463, 0x0463},
862 {0x0465, 0x0465},
863 {0x0467, 0x0467},
864 {0x0469, 0x0469},
865 {0x046B, 0x046B},
866 {0x046D, 0x046D},
867 {0x046F, 0x046F},
868 {0x0471, 0x0471},
869 {0x0473, 0x0473},
870 {0x0475, 0x0475},
871 {0x0477, 0x0477},
872 {0x0479, 0x0479},
873 {0x047B, 0x047B},
874 {0x047D, 0x047D},
875 {0x047F, 0x047F},
876 {0x0481, 0x0481},
877 {0x048B, 0x048B},
878 {0x048D, 0x048D},
879 {0x048F, 0x048F},
880 {0x0491, 0x0491},
881 {0x0493, 0x0493},
882 {0x0495, 0x0495},
883 {0x0497, 0x0497},
884 {0x0499, 0x0499},
885 {0x049B, 0x049B},
886 {0x049D, 0x049D},
887 {0x049F, 0x049F},
888 {0x04A1, 0x04A1},
889 {0x04A3, 0x04A3},
890 {0x04A5, 0x04A5},
891 {0x04A7, 0x04A7},
892 {0x04A9, 0x04A9},
893 {0x04AB, 0x04AB},
894 {0x04AD, 0x04AD},
895 {0x04AF, 0x04AF},
896 {0x04B1, 0x04B1},
897 {0x04B3, 0x04B3},
898 {0x04B5, 0x04B5},
899 {0x04B7, 0x04B7},
900 {0x04B9, 0x04B9},
901 {0x04BB, 0x04BB},
902 {0x04BD, 0x04BD},
903 {0x04BF, 0x04BF},
904 {0x04C2, 0x04C2},
905 {0x04C4, 0x04C4},
906 {0x04C6, 0x04C6},
907 {0x04C8, 0x04C8},
908 {0x04CA, 0x04CA},
909 {0x04CC, 0x04CC},
910 {0x04CE, 0x04CF},
911 {0x04D1, 0x04D1},
912 {0x04D3, 0x04D3},
913 {0x04D5, 0x04D5},
914 {0x04D7, 0x04D7},
915 {0x04D9, 0x04D9},
916 {0x04DB, 0x04DB},
917 {0x04DD, 0x04DD},
918 {0x04DF, 0x04DF},
919 {0x04E1, 0x04E1},
920 {0x04E3, 0x04E3},
921 {0x04E5, 0x04E5},
922 {0x04E7, 0x04E7},
923 {0x04E9, 0x04E9},
924 {0x04EB, 0x04EB},
925 {0x04ED, 0x04ED},
926 {0x04EF, 0x04EF},
927 {0x04F1, 0x04F1},
928 {0x04F3, 0x04F3},
929 {0x04F5, 0x04F5},
930 {0x04F7, 0x04F7},
931 {0x04F9, 0x04F9},
932 {0x04FB, 0x04FB},
933 {0x04FD, 0x04FD},
934 {0x04FF, 0x04FF},
935 {0x0501, 0x0501},
936 {0x0503, 0x0503},
937 {0x0505, 0x0505},
938 {0x0507, 0x0507},
939 {0x0509, 0x0509},
940 {0x050B, 0x050B},
941 {0x050D, 0x050D},
942 {0x050F, 0x050F},
943 {0x0511, 0x0511},
944 {0x0513, 0x0513},
945 {0x0515, 0x0515},
946 {0x0517, 0x0517},
947 {0x0519, 0x0519},
948 {0x051B, 0x051B},
949 {0x051D, 0x051D},
950 {0x051F, 0x051F},
951 {0x0521, 0x0521},
952 {0x0523, 0x0523},
953 {0x0525, 0x0525},
954 {0x0527, 0x0527},
955 {0x0529, 0x0529},
956 {0x052B, 0x052B},
957 {0x052D, 0x052D},
958 {0x052F, 0x052F},
959 {0x0560, 0x0588},
960 {0x10D0, 0x10FA},
961 {0x10FD, 0x10FF},
962 {0x13F8, 0x13FD},
963 {0x1C80, 0x1C88},
964 {0x1C8A, 0x1C8A},
965 {0x1D00, 0x1D2B},
966 {0x1D6B, 0x1D77},
967 {0x1D79, 0x1D9A},
968 {0x1E01, 0x1E01},
969 {0x1E03, 0x1E03},
970 {0x1E05, 0x1E05},
971 {0x1E07, 0x1E07},
972 {0x1E09, 0x1E09},
973 {0x1E0B, 0x1E0B},
974 {0x1E0D, 0x1E0D},
975 {0x1E0F, 0x1E0F},
976 {0x1E11, 0x1E11},
977 {0x1E13, 0x1E13},
978 {0x1E15, 0x1E15},
979 {0x1E17, 0x1E17},
980 {0x1E19, 0x1E19},
981 {0x1E1B, 0x1E1B},
982 {0x1E1D, 0x1E1D},
983 {0x1E1F, 0x1E1F},
984 {0x1E21, 0x1E21},
985 {0x1E23, 0x1E23},
986 {0x1E25, 0x1E25},
987 {0x1E27, 0x1E27},
988 {0x1E29, 0x1E29},
989 {0x1E2B, 0x1E2B},
990 {0x1E2D, 0x1E2D},
991 {0x1E2F, 0x1E2F},
992 {0x1E31, 0x1E31},
993 {0x1E33, 0x1E33},
994 {0x1E35, 0x1E35},
995 {0x1E37, 0x1E37},
996 {0x1E39, 0x1E39},
997 {0x1E3B, 0x1E3B},
998 {0x1E3D, 0x1E3D},
999 {0x1E3F, 0x1E3F},
1000 {0x1E41, 0x1E41},
1001 {0x1E43, 0x1E43},
1002 {0x1E45, 0x1E45},
1003 {0x1E47, 0x1E47},
1004 {0x1E49, 0x1E49},
1005 {0x1E4B, 0x1E4B},
1006 {0x1E4D, 0x1E4D},
1007 {0x1E4F, 0x1E4F},
1008 {0x1E51, 0x1E51},
1009 {0x1E53, 0x1E53},
1010 {0x1E55, 0x1E55},
1011 {0x1E57, 0x1E57},
1012 {0x1E59, 0x1E59},
1013 {0x1E5B, 0x1E5B},
1014 {0x1E5D, 0x1E5D},
1015 {0x1E5F, 0x1E5F},
1016 {0x1E61, 0x1E61},
1017 {0x1E63, 0x1E63},
1018 {0x1E65, 0x1E65},
1019 {0x1E67, 0x1E67},
1020 {0x1E69, 0x1E69},
1021 {0x1E6B, 0x1E6B},
1022 {0x1E6D, 0x1E6D},
1023 {0x1E6F, 0x1E6F},
1024 {0x1E71, 0x1E71},
1025 {0x1E73, 0x1E73},
1026 {0x1E75, 0x1E75},
1027 {0x1E77, 0x1E77},
1028 {0x1E79, 0x1E79},
1029 {0x1E7B, 0x1E7B},
1030 {0x1E7D, 0x1E7D},
1031 {0x1E7F, 0x1E7F},
1032 {0x1E81, 0x1E81},
1033 {0x1E83, 0x1E83},
1034 {0x1E85, 0x1E85},
1035 {0x1E87, 0x1E87},
1036 {0x1E89, 0x1E89},
1037 {0x1E8B, 0x1E8B},
1038 {0x1E8D, 0x1E8D},
1039 {0x1E8F, 0x1E8F},
1040 {0x1E91, 0x1E91},
1041 {0x1E93, 0x1E93},
1042 {0x1E95, 0x1E9D},
1043 {0x1E9F, 0x1E9F},
1044 {0x1EA1, 0x1EA1},
1045 {0x1EA3, 0x1EA3},
1046 {0x1EA5, 0x1EA5},
1047 {0x1EA7, 0x1EA7},
1048 {0x1EA9, 0x1EA9},
1049 {0x1EAB, 0x1EAB},
1050 {0x1EAD, 0x1EAD},
1051 {0x1EAF, 0x1EAF},
1052 {0x1EB1, 0x1EB1},
1053 {0x1EB3, 0x1EB3},
1054 {0x1EB5, 0x1EB5},
1055 {0x1EB7, 0x1EB7},
1056 {0x1EB9, 0x1EB9},
1057 {0x1EBB, 0x1EBB},
1058 {0x1EBD, 0x1EBD},
1059 {0x1EBF, 0x1EBF},
1060 {0x1EC1, 0x1EC1},
1061 {0x1EC3, 0x1EC3},
1062 {0x1EC5, 0x1EC5},
1063 {0x1EC7, 0x1EC7},
1064 {0x1EC9, 0x1EC9},
1065 {0x1ECB, 0x1ECB},
1066 {0x1ECD, 0x1ECD},
1067 {0x1ECF, 0x1ECF},
1068 {0x1ED1, 0x1ED1},
1069 {0x1ED3, 0x1ED3},
1070 {0x1ED5, 0x1ED5},
1071 {0x1ED7, 0x1ED7},
1072 {0x1ED9, 0x1ED9},
1073 {0x1EDB, 0x1EDB},
1074 {0x1EDD, 0x1EDD},
1075 {0x1EDF, 0x1EDF},
1076 {0x1EE1, 0x1EE1},
1077 {0x1EE3, 0x1EE3},
1078 {0x1EE5, 0x1EE5},
1079 {0x1EE7, 0x1EE7},
1080 {0x1EE9, 0x1EE9},
1081 {0x1EEB, 0x1EEB},
1082 {0x1EED, 0x1EED},
1083 {0x1EEF, 0x1EEF},
1084 {0x1EF1, 0x1EF1},
1085 {0x1EF3, 0x1EF3},
1086 {0x1EF5, 0x1EF5},
1087 {0x1EF7, 0x1EF7},
1088 {0x1EF9, 0x1EF9},
1089 {0x1EFB, 0x1EFB},
1090 {0x1EFD, 0x1EFD},
1091 {0x1EFF, 0x1F07},
1092 {0x1F10, 0x1F15},
1093 {0x1F20, 0x1F27},
1094 {0x1F30, 0x1F37},
1095 {0x1F40, 0x1F45},
1096 {0x1F50, 0x1F57},
1097 {0x1F60, 0x1F67},
1098 {0x1F70, 0x1F7D},
1099 {0x1F80, 0x1F87},
1100 {0x1F90, 0x1F97},
1101 {0x1FA0, 0x1FA7},
1102 {0x1FB0, 0x1FB4},
1103 {0x1FB6, 0x1FB7},
1104 {0x1FBE, 0x1FBE},
1105 {0x1FC2, 0x1FC4},
1106 {0x1FC6, 0x1FC7},
1107 {0x1FD0, 0x1FD3},
1108 {0x1FD6, 0x1FD7},
1109 {0x1FE0, 0x1FE7},
1110 {0x1FF2, 0x1FF4},
1111 {0x1FF6, 0x1FF7},
1112 {0x210A, 0x210A},
1113 {0x210E, 0x210F},
1114 {0x2113, 0x2113},
1115 {0x212F, 0x212F},
1116 {0x2134, 0x2134},
1117 {0x2139, 0x2139},
1118 {0x213C, 0x213D},
1119 {0x2146, 0x2149},
1120 {0x214E, 0x214E},
1121 {0x2184, 0x2184},
1122 {0x2C30, 0x2C5F},
1123 {0x2C61, 0x2C61},
1124 {0x2C65, 0x2C66},
1125 {0x2C68, 0x2C68},
1126 {0x2C6A, 0x2C6A},
1127 {0x2C6C, 0x2C6C},
1128 {0x2C71, 0x2C71},
1129 {0x2C73, 0x2C74},
1130 {0x2C76, 0x2C7B},
1131 {0x2C81, 0x2C81},
1132 {0x2C83, 0x2C83},
1133 {0x2C85, 0x2C85},
1134 {0x2C87, 0x2C87},
1135 {0x2C89, 0x2C89},
1136 {0x2C8B, 0x2C8B},
1137 {0x2C8D, 0x2C8D},
1138 {0x2C8F, 0x2C8F},
1139 {0x2C91, 0x2C91},
1140 {0x2C93, 0x2C93},
1141 {0x2C95, 0x2C95},
1142 {0x2C97, 0x2C97},
1143 {0x2C99, 0x2C99},
1144 {0x2C9B, 0x2C9B},
1145 {0x2C9D, 0x2C9D},
1146 {0x2C9F, 0x2C9F},
1147 {0x2CA1, 0x2CA1},
1148 {0x2CA3, 0x2CA3},
1149 {0x2CA5, 0x2CA5},
1150 {0x2CA7, 0x2CA7},
1151 {0x2CA9, 0x2CA9},
1152 {0x2CAB, 0x2CAB},
1153 {0x2CAD, 0x2CAD},
1154 {0x2CAF, 0x2CAF},
1155 {0x2CB1, 0x2CB1},
1156 {0x2CB3, 0x2CB3},
1157 {0x2CB5, 0x2CB5},
1158 {0x2CB7, 0x2CB7},
1159 {0x2CB9, 0x2CB9},
1160 {0x2CBB, 0x2CBB},
1161 {0x2CBD, 0x2CBD},
1162 {0x2CBF, 0x2CBF},
1163 {0x2CC1, 0x2CC1},
1164 {0x2CC3, 0x2CC3},
1165 {0x2CC5, 0x2CC5},
1166 {0x2CC7, 0x2CC7},
1167 {0x2CC9, 0x2CC9},
1168 {0x2CCB, 0x2CCB},
1169 {0x2CCD, 0x2CCD},
1170 {0x2CCF, 0x2CCF},
1171 {0x2CD1, 0x2CD1},
1172 {0x2CD3, 0x2CD3},
1173 {0x2CD5, 0x2CD5},
1174 {0x2CD7, 0x2CD7},
1175 {0x2CD9, 0x2CD9},
1176 {0x2CDB, 0x2CDB},
1177 {0x2CDD, 0x2CDD},
1178 {0x2CDF, 0x2CDF},
1179 {0x2CE1, 0x2CE1},
1180 {0x2CE3, 0x2CE4},
1181 {0x2CEC, 0x2CEC},
1182 {0x2CEE, 0x2CEE},
1183 {0x2CF3, 0x2CF3},
1184 {0x2D00, 0x2D25},
1185 {0x2D27, 0x2D27},
1186 {0x2D2D, 0x2D2D},
1187 {0xA641, 0xA641},
1188 {0xA643, 0xA643},
1189 {0xA645, 0xA645},
1190 {0xA647, 0xA647},
1191 {0xA649, 0xA649},
1192 {0xA64B, 0xA64B},
1193 {0xA64D, 0xA64D},
1194 {0xA64F, 0xA64F},
1195 {0xA651, 0xA651},
1196 {0xA653, 0xA653},
1197 {0xA655, 0xA655},
1198 {0xA657, 0xA657},
1199 {0xA659, 0xA659},
1200 {0xA65B, 0xA65B},
1201 {0xA65D, 0xA65D},
1202 {0xA65F, 0xA65F},
1203 {0xA661, 0xA661},
1204 {0xA663, 0xA663},
1205 {0xA665, 0xA665},
1206 {0xA667, 0xA667},
1207 {0xA669, 0xA669},
1208 {0xA66B, 0xA66B},
1209 {0xA66D, 0xA66D},
1210 {0xA681, 0xA681},
1211 {0xA683, 0xA683},
1212 {0xA685, 0xA685},
1213 {0xA687, 0xA687},
1214 {0xA689, 0xA689},
1215 {0xA68B, 0xA68B},
1216 {0xA68D, 0xA68D},
1217 {0xA68F, 0xA68F},
1218 {0xA691, 0xA691},
1219 {0xA693, 0xA693},
1220 {0xA695, 0xA695},
1221 {0xA697, 0xA697},
1222 {0xA699, 0xA699},
1223 {0xA69B, 0xA69B},
1224 {0xA723, 0xA723},
1225 {0xA725, 0xA725},
1226 {0xA727, 0xA727},
1227 {0xA729, 0xA729},
1228 {0xA72B, 0xA72B},
1229 {0xA72D, 0xA72D},
1230 {0xA72F, 0xA731},
1231 {0xA733, 0xA733},
1232 {0xA735, 0xA735},
1233 {0xA737, 0xA737},
1234 {0xA739, 0xA739},
1235 {0xA73B, 0xA73B},
1236 {0xA73D, 0xA73D},
1237 {0xA73F, 0xA73F},
1238 {0xA741, 0xA741},
1239 {0xA743, 0xA743},
1240 {0xA745, 0xA745},
1241 {0xA747, 0xA747},
1242 {0xA749, 0xA749},
1243 {0xA74B, 0xA74B},
1244 {0xA74D, 0xA74D},
1245 {0xA74F, 0xA74F},
1246 {0xA751, 0xA751},
1247 {0xA753, 0xA753},
1248 {0xA755, 0xA755},
1249 {0xA757, 0xA757},
1250 {0xA759, 0xA759},
1251 {0xA75B, 0xA75B},
1252 {0xA75D, 0xA75D},
1253 {0xA75F, 0xA75F},
1254 {0xA761, 0xA761},
1255 {0xA763, 0xA763},
1256 {0xA765, 0xA765},
1257 {0xA767, 0xA767},
1258 {0xA769, 0xA769},
1259 {0xA76B, 0xA76B},
1260 {0xA76D, 0xA76D},
1261 {0xA76F, 0xA76F},
1262 {0xA771, 0xA778},
1263 {0xA77A, 0xA77A},
1264 {0xA77C, 0xA77C},
1265 {0xA77F, 0xA77F},
1266 {0xA781, 0xA781},
1267 {0xA783, 0xA783},
1268 {0xA785, 0xA785},
1269 {0xA787, 0xA787},
1270 {0xA78C, 0xA78C},
1271 {0xA78E, 0xA78E},
1272 {0xA791, 0xA791},
1273 {0xA793, 0xA795},
1274 {0xA797, 0xA797},
1275 {0xA799, 0xA799},
1276 {0xA79B, 0xA79B},
1277 {0xA79D, 0xA79D},
1278 {0xA79F, 0xA79F},
1279 {0xA7A1, 0xA7A1},
1280 {0xA7A3, 0xA7A3},
1281 {0xA7A5, 0xA7A5},
1282 {0xA7A7, 0xA7A7},
1283 {0xA7A9, 0xA7A9},
1284 {0xA7AF, 0xA7AF},
1285 {0xA7B5, 0xA7B5},
1286 {0xA7B7, 0xA7B7},
1287 {0xA7B9, 0xA7B9},
1288 {0xA7BB, 0xA7BB},
1289 {0xA7BD, 0xA7BD},
1290 {0xA7BF, 0xA7BF},
1291 {0xA7C1, 0xA7C1},
1292 {0xA7C3, 0xA7C3},
1293 {0xA7C8, 0xA7C8},
1294 {0xA7CA, 0xA7CA},
1295 {0xA7CD, 0xA7CD},
1296 {0xA7D1, 0xA7D1},
1297 {0xA7D3, 0xA7D3},
1298 {0xA7D5, 0xA7D5},
1299 {0xA7D7, 0xA7D7},
1300 {0xA7D9, 0xA7D9},
1301 {0xA7DB, 0xA7DB},
1302 {0xA7F6, 0xA7F6},
1303 {0xA7FA, 0xA7FA},
1304 {0xAB30, 0xAB5A},
1305 {0xAB60, 0xAB68},
1306 {0xAB70, 0xABBF},
1307 {0xFB00, 0xFB06},
1308 {0xFB13, 0xFB17},
1309 {0xFF41, 0xFF5A},
1310 {0x10428, 0x1044F},
1311 {0x104D8, 0x104FB},
1312 {0x10597, 0x105A1},
1313 {0x105A3, 0x105B1},
1314 {0x105B3, 0x105B9},
1315 {0x105BB, 0x105BC},
1316 {0x10CC0, 0x10CF2},
1317 {0x10D70, 0x10D85},
1318 {0x118C0, 0x118DF},
1319 {0x16E60, 0x16E7F},
1320 {0x1D41A, 0x1D433},
1321 {0x1D44E, 0x1D454},
1322 {0x1D456, 0x1D467},
1323 {0x1D482, 0x1D49B},
1324 {0x1D4B6, 0x1D4B9},
1325 {0x1D4BB, 0x1D4BB},
1326 {0x1D4BD, 0x1D4C3},
1327 {0x1D4C5, 0x1D4CF},
1328 {0x1D4EA, 0x1D503},
1329 {0x1D51E, 0x1D537},
1330 {0x1D552, 0x1D56B},
1331 {0x1D586, 0x1D59F},
1332 {0x1D5BA, 0x1D5D3},
1333 {0x1D5EE, 0x1D607},
1334 {0x1D622, 0x1D63B},
1335 {0x1D656, 0x1D66F},
1336 {0x1D68A, 0x1D6A5},
1337 {0x1D6C2, 0x1D6DA},
1338 {0x1D6DC, 0x1D6E1},
1339 {0x1D6FC, 0x1D714},
1340 {0x1D716, 0x1D71B},
1341 {0x1D736, 0x1D74E},
1342 {0x1D750, 0x1D755},
1343 {0x1D770, 0x1D788},
1344 {0x1D78A, 0x1D78F},
1345 {0x1D7AA, 0x1D7C2},
1346 {0x1D7C4, 0x1D7C9},
1347 {0x1D7CB, 0x1D7CB},
1348 {0x1DF00, 0x1DF09},
1349 {0x1DF0B, 0x1DF1E},
1350 {0x1DF25, 0x1DF2A},
1351 {0x1E922, 0x1E943},
1352 };
1353
1355 inline constexpr code_range gc_Lt_ranges[] {
1356 {0x01C5, 0x01C5},
1357 {0x01C8, 0x01C8},
1358 {0x01CB, 0x01CB},
1359 {0x01F2, 0x01F2},
1360 {0x1F88, 0x1F8F},
1361 {0x1F98, 0x1F9F},
1362 {0x1FA8, 0x1FAF},
1363 {0x1FBC, 0x1FBC},
1364 {0x1FCC, 0x1FCC},
1365 {0x1FFC, 0x1FFC},
1366 };
1367
1369 inline constexpr code_range gc_Lm_ranges[] {
1370 {0x02B0, 0x02C1},
1371 {0x02C6, 0x02D1},
1372 {0x02E0, 0x02E4},
1373 {0x02EC, 0x02EC},
1374 {0x02EE, 0x02EE},
1375 {0x0374, 0x0374},
1376 {0x037A, 0x037A},
1377 {0x0559, 0x0559},
1378 {0x0640, 0x0640},
1379 {0x06E5, 0x06E6},
1380 {0x07F4, 0x07F5},
1381 {0x07FA, 0x07FA},
1382 {0x081A, 0x081A},
1383 {0x0824, 0x0824},
1384 {0x0828, 0x0828},
1385 {0x08C9, 0x08C9},
1386 {0x0971, 0x0971},
1387 {0x0E46, 0x0E46},
1388 {0x0EC6, 0x0EC6},
1389 {0x10FC, 0x10FC},
1390 {0x17D7, 0x17D7},
1391 {0x1843, 0x1843},
1392 {0x1AA7, 0x1AA7},
1393 {0x1C78, 0x1C7D},
1394 {0x1D2C, 0x1D6A},
1395 {0x1D78, 0x1D78},
1396 {0x1D9B, 0x1DBF},
1397 {0x2071, 0x2071},
1398 {0x207F, 0x207F},
1399 {0x2090, 0x209C},
1400 {0x2C7C, 0x2C7D},
1401 {0x2D6F, 0x2D6F},
1402 {0x2E2F, 0x2E2F},
1403 {0x3005, 0x3005},
1404 {0x3031, 0x3035},
1405 {0x303B, 0x303B},
1406 {0x309D, 0x309E},
1407 {0x30FC, 0x30FE},
1408 {0xA015, 0xA015},
1409 {0xA4F8, 0xA4FD},
1410 {0xA60C, 0xA60C},
1411 {0xA67F, 0xA67F},
1412 {0xA69C, 0xA69D},
1413 {0xA717, 0xA71F},
1414 {0xA770, 0xA770},
1415 {0xA788, 0xA788},
1416 {0xA7F2, 0xA7F4},
1417 {0xA7F8, 0xA7F9},
1418 {0xA9CF, 0xA9CF},
1419 {0xA9E6, 0xA9E6},
1420 {0xAA70, 0xAA70},
1421 {0xAADD, 0xAADD},
1422 {0xAAF3, 0xAAF4},
1423 {0xAB5C, 0xAB5F},
1424 {0xAB69, 0xAB69},
1425 {0xFF70, 0xFF70},
1426 {0xFF9E, 0xFF9F},
1427 {0x10780, 0x10785},
1428 {0x10787, 0x107B0},
1429 {0x107B2, 0x107BA},
1430 {0x10D4E, 0x10D4E},
1431 {0x10D6F, 0x10D6F},
1432 {0x16B40, 0x16B43},
1433 {0x16D40, 0x16D42},
1434 {0x16D6B, 0x16D6C},
1435 {0x16F93, 0x16F9F},
1436 {0x16FE0, 0x16FE1},
1437 {0x16FE3, 0x16FE3},
1438 {0x1AFF0, 0x1AFF3},
1439 {0x1AFF5, 0x1AFFB},
1440 {0x1AFFD, 0x1AFFE},
1441 {0x1E030, 0x1E06D},
1442 {0x1E137, 0x1E13D},
1443 {0x1E4EB, 0x1E4EB},
1444 {0x1E94B, 0x1E94B},
1445 };
1446
1448 inline constexpr code_range gc_Lo_ranges[] {
1449 {0x00AA, 0x00AA},
1450 {0x00BA, 0x00BA},
1451 {0x01BB, 0x01BB},
1452 {0x01C0, 0x01C3},
1453 {0x0294, 0x0294},
1454 {0x05D0, 0x05EA},
1455 {0x05EF, 0x05F2},
1456 {0x0620, 0x063F},
1457 {0x0641, 0x064A},
1458 {0x066E, 0x066F},
1459 {0x0671, 0x06D3},
1460 {0x06D5, 0x06D5},
1461 {0x06EE, 0x06EF},
1462 {0x06FA, 0x06FC},
1463 {0x06FF, 0x06FF},
1464 {0x0710, 0x0710},
1465 {0x0712, 0x072F},
1466 {0x074D, 0x07A5},
1467 {0x07B1, 0x07B1},
1468 {0x07CA, 0x07EA},
1469 {0x0800, 0x0815},
1470 {0x0840, 0x0858},
1471 {0x0860, 0x086A},
1472 {0x0870, 0x0887},
1473 {0x0889, 0x088E},
1474 {0x08A0, 0x08C8},
1475 {0x0904, 0x0939},
1476 {0x093D, 0x093D},
1477 {0x0950, 0x0950},
1478 {0x0958, 0x0961},
1479 {0x0972, 0x0980},
1480 {0x0985, 0x098C},
1481 {0x098F, 0x0990},
1482 {0x0993, 0x09A8},
1483 {0x09AA, 0x09B0},
1484 {0x09B2, 0x09B2},
1485 {0x09B6, 0x09B9},
1486 {0x09BD, 0x09BD},
1487 {0x09CE, 0x09CE},
1488 {0x09DC, 0x09DD},
1489 {0x09DF, 0x09E1},
1490 {0x09F0, 0x09F1},
1491 {0x09FC, 0x09FC},
1492 {0x0A05, 0x0A0A},
1493 {0x0A0F, 0x0A10},
1494 {0x0A13, 0x0A28},
1495 {0x0A2A, 0x0A30},
1496 {0x0A32, 0x0A33},
1497 {0x0A35, 0x0A36},
1498 {0x0A38, 0x0A39},
1499 {0x0A59, 0x0A5C},
1500 {0x0A5E, 0x0A5E},
1501 {0x0A72, 0x0A74},
1502 {0x0A85, 0x0A8D},
1503 {0x0A8F, 0x0A91},
1504 {0x0A93, 0x0AA8},
1505 {0x0AAA, 0x0AB0},
1506 {0x0AB2, 0x0AB3},
1507 {0x0AB5, 0x0AB9},
1508 {0x0ABD, 0x0ABD},
1509 {0x0AD0, 0x0AD0},
1510 {0x0AE0, 0x0AE1},
1511 {0x0AF9, 0x0AF9},
1512 {0x0B05, 0x0B0C},
1513 {0x0B0F, 0x0B10},
1514 {0x0B13, 0x0B28},
1515 {0x0B2A, 0x0B30},
1516 {0x0B32, 0x0B33},
1517 {0x0B35, 0x0B39},
1518 {0x0B3D, 0x0B3D},
1519 {0x0B5C, 0x0B5D},
1520 {0x0B5F, 0x0B61},
1521 {0x0B71, 0x0B71},
1522 {0x0B83, 0x0B83},
1523 {0x0B85, 0x0B8A},
1524 {0x0B8E, 0x0B90},
1525 {0x0B92, 0x0B95},
1526 {0x0B99, 0x0B9A},
1527 {0x0B9C, 0x0B9C},
1528 {0x0B9E, 0x0B9F},
1529 {0x0BA3, 0x0BA4},
1530 {0x0BA8, 0x0BAA},
1531 {0x0BAE, 0x0BB9},
1532 {0x0BD0, 0x0BD0},
1533 {0x0C05, 0x0C0C},
1534 {0x0C0E, 0x0C10},
1535 {0x0C12, 0x0C28},
1536 {0x0C2A, 0x0C39},
1537 {0x0C3D, 0x0C3D},
1538 {0x0C58, 0x0C5A},
1539 {0x0C5D, 0x0C5D},
1540 {0x0C60, 0x0C61},
1541 {0x0C80, 0x0C80},
1542 {0x0C85, 0x0C8C},
1543 {0x0C8E, 0x0C90},
1544 {0x0C92, 0x0CA8},
1545 {0x0CAA, 0x0CB3},
1546 {0x0CB5, 0x0CB9},
1547 {0x0CBD, 0x0CBD},
1548 {0x0CDD, 0x0CDE},
1549 {0x0CE0, 0x0CE1},
1550 {0x0CF1, 0x0CF2},
1551 {0x0D04, 0x0D0C},
1552 {0x0D0E, 0x0D10},
1553 {0x0D12, 0x0D3A},
1554 {0x0D3D, 0x0D3D},
1555 {0x0D4E, 0x0D4E},
1556 {0x0D54, 0x0D56},
1557 {0x0D5F, 0x0D61},
1558 {0x0D7A, 0x0D7F},
1559 {0x0D85, 0x0D96},
1560 {0x0D9A, 0x0DB1},
1561 {0x0DB3, 0x0DBB},
1562 {0x0DBD, 0x0DBD},
1563 {0x0DC0, 0x0DC6},
1564 {0x0E01, 0x0E30},
1565 {0x0E32, 0x0E33},
1566 {0x0E40, 0x0E45},
1567 {0x0E81, 0x0E82},
1568 {0x0E84, 0x0E84},
1569 {0x0E86, 0x0E8A},
1570 {0x0E8C, 0x0EA3},
1571 {0x0EA5, 0x0EA5},
1572 {0x0EA7, 0x0EB0},
1573 {0x0EB2, 0x0EB3},
1574 {0x0EBD, 0x0EBD},
1575 {0x0EC0, 0x0EC4},
1576 {0x0EDC, 0x0EDF},
1577 {0x0F00, 0x0F00},
1578 {0x0F40, 0x0F47},
1579 {0x0F49, 0x0F6C},
1580 {0x0F88, 0x0F8C},
1581 {0x1000, 0x102A},
1582 {0x103F, 0x103F},
1583 {0x1050, 0x1055},
1584 {0x105A, 0x105D},
1585 {0x1061, 0x1061},
1586 {0x1065, 0x1066},
1587 {0x106E, 0x1070},
1588 {0x1075, 0x1081},
1589 {0x108E, 0x108E},
1590 {0x1100, 0x1248},
1591 {0x124A, 0x124D},
1592 {0x1250, 0x1256},
1593 {0x1258, 0x1258},
1594 {0x125A, 0x125D},
1595 {0x1260, 0x1288},
1596 {0x128A, 0x128D},
1597 {0x1290, 0x12B0},
1598 {0x12B2, 0x12B5},
1599 {0x12B8, 0x12BE},
1600 {0x12C0, 0x12C0},
1601 {0x12C2, 0x12C5},
1602 {0x12C8, 0x12D6},
1603 {0x12D8, 0x1310},
1604 {0x1312, 0x1315},
1605 {0x1318, 0x135A},
1606 {0x1380, 0x138F},
1607 {0x1401, 0x166C},
1608 {0x166F, 0x167F},
1609 {0x1681, 0x169A},
1610 {0x16A0, 0x16EA},
1611 {0x16F1, 0x16F8},
1612 {0x1700, 0x1711},
1613 {0x171F, 0x1731},
1614 {0x1740, 0x1751},
1615 {0x1760, 0x176C},
1616 {0x176E, 0x1770},
1617 {0x1780, 0x17B3},
1618 {0x17DC, 0x17DC},
1619 {0x1820, 0x1842},
1620 {0x1844, 0x1878},
1621 {0x1880, 0x1884},
1622 {0x1887, 0x18A8},
1623 {0x18AA, 0x18AA},
1624 {0x18B0, 0x18F5},
1625 {0x1900, 0x191E},
1626 {0x1950, 0x196D},
1627 {0x1970, 0x1974},
1628 {0x1980, 0x19AB},
1629 {0x19B0, 0x19C9},
1630 {0x1A00, 0x1A16},
1631 {0x1A20, 0x1A54},
1632 {0x1B05, 0x1B33},
1633 {0x1B45, 0x1B4C},
1634 {0x1B83, 0x1BA0},
1635 {0x1BAE, 0x1BAF},
1636 {0x1BBA, 0x1BE5},
1637 {0x1C00, 0x1C23},
1638 {0x1C4D, 0x1C4F},
1639 {0x1C5A, 0x1C77},
1640 {0x1CE9, 0x1CEC},
1641 {0x1CEE, 0x1CF3},
1642 {0x1CF5, 0x1CF6},
1643 {0x1CFA, 0x1CFA},
1644 {0x2135, 0x2138},
1645 {0x2D30, 0x2D67},
1646 {0x2D80, 0x2D96},
1647 {0x2DA0, 0x2DA6},
1648 {0x2DA8, 0x2DAE},
1649 {0x2DB0, 0x2DB6},
1650 {0x2DB8, 0x2DBE},
1651 {0x2DC0, 0x2DC6},
1652 {0x2DC8, 0x2DCE},
1653 {0x2DD0, 0x2DD6},
1654 {0x2DD8, 0x2DDE},
1655 {0x3006, 0x3006},
1656 {0x303C, 0x303C},
1657 {0x3041, 0x3096},
1658 {0x309F, 0x309F},
1659 {0x30A1, 0x30FA},
1660 {0x30FF, 0x30FF},
1661 {0x3105, 0x312F},
1662 {0x3131, 0x318E},
1663 {0x31A0, 0x31BF},
1664 {0x31F0, 0x31FF},
1665 {0x3400, 0x4DBF},
1666 {0x4E00, 0xA014},
1667 {0xA016, 0xA48C},
1668 {0xA4D0, 0xA4F7},
1669 {0xA500, 0xA60B},
1670 {0xA610, 0xA61F},
1671 {0xA62A, 0xA62B},
1672 {0xA66E, 0xA66E},
1673 {0xA6A0, 0xA6E5},
1674 {0xA78F, 0xA78F},
1675 {0xA7F7, 0xA7F7},
1676 {0xA7FB, 0xA801},
1677 {0xA803, 0xA805},
1678 {0xA807, 0xA80A},
1679 {0xA80C, 0xA822},
1680 {0xA840, 0xA873},
1681 {0xA882, 0xA8B3},
1682 {0xA8F2, 0xA8F7},
1683 {0xA8FB, 0xA8FB},
1684 {0xA8FD, 0xA8FE},
1685 {0xA90A, 0xA925},
1686 {0xA930, 0xA946},
1687 {0xA960, 0xA97C},
1688 {0xA984, 0xA9B2},
1689 {0xA9E0, 0xA9E4},
1690 {0xA9E7, 0xA9EF},
1691 {0xA9FA, 0xA9FE},
1692 {0xAA00, 0xAA28},
1693 {0xAA40, 0xAA42},
1694 {0xAA44, 0xAA4B},
1695 {0xAA60, 0xAA6F},
1696 {0xAA71, 0xAA76},
1697 {0xAA7A, 0xAA7A},
1698 {0xAA7E, 0xAAAF},
1699 {0xAAB1, 0xAAB1},
1700 {0xAAB5, 0xAAB6},
1701 {0xAAB9, 0xAABD},
1702 {0xAAC0, 0xAAC0},
1703 {0xAAC2, 0xAAC2},
1704 {0xAADB, 0xAADC},
1705 {0xAAE0, 0xAAEA},
1706 {0xAAF2, 0xAAF2},
1707 {0xAB01, 0xAB06},
1708 {0xAB09, 0xAB0E},
1709 {0xAB11, 0xAB16},
1710 {0xAB20, 0xAB26},
1711 {0xAB28, 0xAB2E},
1712 {0xABC0, 0xABE2},
1713 {0xAC00, 0xD7A3},
1714 {0xD7B0, 0xD7C6},
1715 {0xD7CB, 0xD7FB},
1716 {0xF900, 0xFA6D},
1717 {0xFA70, 0xFAD9},
1718 {0xFB1D, 0xFB1D},
1719 {0xFB1F, 0xFB28},
1720 {0xFB2A, 0xFB36},
1721 {0xFB38, 0xFB3C},
1722 {0xFB3E, 0xFB3E},
1723 {0xFB40, 0xFB41},
1724 {0xFB43, 0xFB44},
1725 {0xFB46, 0xFBB1},
1726 {0xFBD3, 0xFD3D},
1727 {0xFD50, 0xFD8F},
1728 {0xFD92, 0xFDC7},
1729 {0xFDF0, 0xFDFB},
1730 {0xFE70, 0xFE74},
1731 {0xFE76, 0xFEFC},
1732 {0xFF66, 0xFF6F},
1733 {0xFF71, 0xFF9D},
1734 {0xFFA0, 0xFFBE},
1735 {0xFFC2, 0xFFC7},
1736 {0xFFCA, 0xFFCF},
1737 {0xFFD2, 0xFFD7},
1738 {0xFFDA, 0xFFDC},
1739 {0x10000, 0x1000B},
1740 {0x1000D, 0x10026},
1741 {0x10028, 0x1003A},
1742 {0x1003C, 0x1003D},
1743 {0x1003F, 0x1004D},
1744 {0x10050, 0x1005D},
1745 {0x10080, 0x100FA},
1746 {0x10280, 0x1029C},
1747 {0x102A0, 0x102D0},
1748 {0x10300, 0x1031F},
1749 {0x1032D, 0x10340},
1750 {0x10342, 0x10349},
1751 {0x10350, 0x10375},
1752 {0x10380, 0x1039D},
1753 {0x103A0, 0x103C3},
1754 {0x103C8, 0x103CF},
1755 {0x10450, 0x1049D},
1756 {0x10500, 0x10527},
1757 {0x10530, 0x10563},
1758 {0x105C0, 0x105F3},
1759 {0x10600, 0x10736},
1760 {0x10740, 0x10755},
1761 {0x10760, 0x10767},
1762 {0x10800, 0x10805},
1763 {0x10808, 0x10808},
1764 {0x1080A, 0x10835},
1765 {0x10837, 0x10838},
1766 {0x1083C, 0x1083C},
1767 {0x1083F, 0x10855},
1768 {0x10860, 0x10876},
1769 {0x10880, 0x1089E},
1770 {0x108E0, 0x108F2},
1771 {0x108F4, 0x108F5},
1772 {0x10900, 0x10915},
1773 {0x10920, 0x10939},
1774 {0x10980, 0x109B7},
1775 {0x109BE, 0x109BF},
1776 {0x10A00, 0x10A00},
1777 {0x10A10, 0x10A13},
1778 {0x10A15, 0x10A17},
1779 {0x10A19, 0x10A35},
1780 {0x10A60, 0x10A7C},
1781 {0x10A80, 0x10A9C},
1782 {0x10AC0, 0x10AC7},
1783 {0x10AC9, 0x10AE4},
1784 {0x10B00, 0x10B35},
1785 {0x10B40, 0x10B55},
1786 {0x10B60, 0x10B72},
1787 {0x10B80, 0x10B91},
1788 {0x10C00, 0x10C48},
1789 {0x10D00, 0x10D23},
1790 {0x10D4A, 0x10D4D},
1791 {0x10D4F, 0x10D4F},
1792 {0x10E80, 0x10EA9},
1793 {0x10EB0, 0x10EB1},
1794 {0x10EC2, 0x10EC4},
1795 {0x10F00, 0x10F1C},
1796 {0x10F27, 0x10F27},
1797 {0x10F30, 0x10F45},
1798 {0x10F70, 0x10F81},
1799 {0x10FB0, 0x10FC4},
1800 {0x10FE0, 0x10FF6},
1801 {0x11003, 0x11037},
1802 {0x11071, 0x11072},
1803 {0x11075, 0x11075},
1804 {0x11083, 0x110AF},
1805 {0x110D0, 0x110E8},
1806 {0x11103, 0x11126},
1807 {0x11144, 0x11144},
1808 {0x11147, 0x11147},
1809 {0x11150, 0x11172},
1810 {0x11176, 0x11176},
1811 {0x11183, 0x111B2},
1812 {0x111C1, 0x111C4},
1813 {0x111DA, 0x111DA},
1814 {0x111DC, 0x111DC},
1815 {0x11200, 0x11211},
1816 {0x11213, 0x1122B},
1817 {0x1123F, 0x11240},
1818 {0x11280, 0x11286},
1819 {0x11288, 0x11288},
1820 {0x1128A, 0x1128D},
1821 {0x1128F, 0x1129D},
1822 {0x1129F, 0x112A8},
1823 {0x112B0, 0x112DE},
1824 {0x11305, 0x1130C},
1825 {0x1130F, 0x11310},
1826 {0x11313, 0x11328},
1827 {0x1132A, 0x11330},
1828 {0x11332, 0x11333},
1829 {0x11335, 0x11339},
1830 {0x1133D, 0x1133D},
1831 {0x11350, 0x11350},
1832 {0x1135D, 0x11361},
1833 {0x11380, 0x11389},
1834 {0x1138B, 0x1138B},
1835 {0x1138E, 0x1138E},
1836 {0x11390, 0x113B5},
1837 {0x113B7, 0x113B7},
1838 {0x113D1, 0x113D1},
1839 {0x113D3, 0x113D3},
1840 {0x11400, 0x11434},
1841 {0x11447, 0x1144A},
1842 {0x1145F, 0x11461},
1843 {0x11480, 0x114AF},
1844 {0x114C4, 0x114C5},
1845 {0x114C7, 0x114C7},
1846 {0x11580, 0x115AE},
1847 {0x115D8, 0x115DB},
1848 {0x11600, 0x1162F},
1849 {0x11644, 0x11644},
1850 {0x11680, 0x116AA},
1851 {0x116B8, 0x116B8},
1852 {0x11700, 0x1171A},
1853 {0x11740, 0x11746},
1854 {0x11800, 0x1182B},
1855 {0x118FF, 0x11906},
1856 {0x11909, 0x11909},
1857 {0x1190C, 0x11913},
1858 {0x11915, 0x11916},
1859 {0x11918, 0x1192F},
1860 {0x1193F, 0x1193F},
1861 {0x11941, 0x11941},
1862 {0x119A0, 0x119A7},
1863 {0x119AA, 0x119D0},
1864 {0x119E1, 0x119E1},
1865 {0x119E3, 0x119E3},
1866 {0x11A00, 0x11A00},
1867 {0x11A0B, 0x11A32},
1868 {0x11A3A, 0x11A3A},
1869 {0x11A50, 0x11A50},
1870 {0x11A5C, 0x11A89},
1871 {0x11A9D, 0x11A9D},
1872 {0x11AB0, 0x11AF8},
1873 {0x11BC0, 0x11BE0},
1874 {0x11C00, 0x11C08},
1875 {0x11C0A, 0x11C2E},
1876 {0x11C40, 0x11C40},
1877 {0x11C72, 0x11C8F},
1878 {0x11D00, 0x11D06},
1879 {0x11D08, 0x11D09},
1880 {0x11D0B, 0x11D30},
1881 {0x11D46, 0x11D46},
1882 {0x11D60, 0x11D65},
1883 {0x11D67, 0x11D68},
1884 {0x11D6A, 0x11D89},
1885 {0x11D98, 0x11D98},
1886 {0x11EE0, 0x11EF2},
1887 {0x11F02, 0x11F02},
1888 {0x11F04, 0x11F10},
1889 {0x11F12, 0x11F33},
1890 {0x11FB0, 0x11FB0},
1891 {0x12000, 0x12399},
1892 {0x12480, 0x12543},
1893 {0x12F90, 0x12FF0},
1894 {0x13000, 0x1342F},
1895 {0x13441, 0x13446},
1896 {0x13460, 0x143FA},
1897 {0x14400, 0x14646},
1898 {0x16100, 0x1611D},
1899 {0x16800, 0x16A38},
1900 {0x16A40, 0x16A5E},
1901 {0x16A70, 0x16ABE},
1902 {0x16AD0, 0x16AED},
1903 {0x16B00, 0x16B2F},
1904 {0x16B63, 0x16B77},
1905 {0x16B7D, 0x16B8F},
1906 {0x16D43, 0x16D6A},
1907 {0x16F00, 0x16F4A},
1908 {0x16F50, 0x16F50},
1909 {0x17000, 0x187F7},
1910 {0x18800, 0x18CD5},
1911 {0x18CFF, 0x18D08},
1912 {0x1B000, 0x1B122},
1913 {0x1B132, 0x1B132},
1914 {0x1B150, 0x1B152},
1915 {0x1B155, 0x1B155},
1916 {0x1B164, 0x1B167},
1917 {0x1B170, 0x1B2FB},
1918 {0x1BC00, 0x1BC6A},
1919 {0x1BC70, 0x1BC7C},
1920 {0x1BC80, 0x1BC88},
1921 {0x1BC90, 0x1BC99},
1922 {0x1DF0A, 0x1DF0A},
1923 {0x1E100, 0x1E12C},
1924 {0x1E14E, 0x1E14E},
1925 {0x1E290, 0x1E2AD},
1926 {0x1E2C0, 0x1E2EB},
1927 {0x1E4D0, 0x1E4EA},
1928 {0x1E5D0, 0x1E5ED},
1929 {0x1E5F0, 0x1E5F0},
1930 {0x1E7E0, 0x1E7E6},
1931 {0x1E7E8, 0x1E7EB},
1932 {0x1E7ED, 0x1E7EE},
1933 {0x1E7F0, 0x1E7FE},
1934 {0x1E800, 0x1E8C4},
1935 {0x1EE00, 0x1EE03},
1936 {0x1EE05, 0x1EE1F},
1937 {0x1EE21, 0x1EE22},
1938 {0x1EE24, 0x1EE24},
1939 {0x1EE27, 0x1EE27},
1940 {0x1EE29, 0x1EE32},
1941 {0x1EE34, 0x1EE37},
1942 {0x1EE39, 0x1EE39},
1943 {0x1EE3B, 0x1EE3B},
1944 {0x1EE42, 0x1EE42},
1945 {0x1EE47, 0x1EE47},
1946 {0x1EE49, 0x1EE49},
1947 {0x1EE4B, 0x1EE4B},
1948 {0x1EE4D, 0x1EE4F},
1949 {0x1EE51, 0x1EE52},
1950 {0x1EE54, 0x1EE54},
1951 {0x1EE57, 0x1EE57},
1952 {0x1EE59, 0x1EE59},
1953 {0x1EE5B, 0x1EE5B},
1954 {0x1EE5D, 0x1EE5D},
1955 {0x1EE5F, 0x1EE5F},
1956 {0x1EE61, 0x1EE62},
1957 {0x1EE64, 0x1EE64},
1958 {0x1EE67, 0x1EE6A},
1959 {0x1EE6C, 0x1EE72},
1960 {0x1EE74, 0x1EE77},
1961 {0x1EE79, 0x1EE7C},
1962 {0x1EE7E, 0x1EE7E},
1963 {0x1EE80, 0x1EE89},
1964 {0x1EE8B, 0x1EE9B},
1965 {0x1EEA1, 0x1EEA3},
1966 {0x1EEA5, 0x1EEA9},
1967 {0x1EEAB, 0x1EEBB},
1968 {0x20000, 0x2A6DF},
1969 {0x2A700, 0x2B739},
1970 {0x2B740, 0x2B81D},
1971 {0x2B820, 0x2CEA1},
1972 {0x2CEB0, 0x2EBE0},
1973 {0x2EBF0, 0x2EE5D},
1974 {0x2F800, 0x2FA1D},
1975 {0x30000, 0x3134A},
1976 {0x31350, 0x323AF},
1977 };
1978
1980 inline constexpr code_range gc_Mn_ranges[] {
1981 {0x0300, 0x036F},
1982 {0x0483, 0x0487},
1983 {0x0591, 0x05BD},
1984 {0x05BF, 0x05BF},
1985 {0x05C1, 0x05C2},
1986 {0x05C4, 0x05C5},
1987 {0x05C7, 0x05C7},
1988 {0x0610, 0x061A},
1989 {0x064B, 0x065F},
1990 {0x0670, 0x0670},
1991 {0x06D6, 0x06DC},
1992 {0x06DF, 0x06E4},
1993 {0x06E7, 0x06E8},
1994 {0x06EA, 0x06ED},
1995 {0x0711, 0x0711},
1996 {0x0730, 0x074A},
1997 {0x07A6, 0x07B0},
1998 {0x07EB, 0x07F3},
1999 {0x07FD, 0x07FD},
2000 {0x0816, 0x0819},
2001 {0x081B, 0x0823},
2002 {0x0825, 0x0827},
2003 {0x0829, 0x082D},
2004 {0x0859, 0x085B},
2005 {0x0897, 0x089F},
2006 {0x08CA, 0x08E1},
2007 {0x08E3, 0x0902},
2008 {0x093A, 0x093A},
2009 {0x093C, 0x093C},
2010 {0x0941, 0x0948},
2011 {0x094D, 0x094D},
2012 {0x0951, 0x0957},
2013 {0x0962, 0x0963},
2014 {0x0981, 0x0981},
2015 {0x09BC, 0x09BC},
2016 {0x09C1, 0x09C4},
2017 {0x09CD, 0x09CD},
2018 {0x09E2, 0x09E3},
2019 {0x09FE, 0x09FE},
2020 {0x0A01, 0x0A02},
2021 {0x0A3C, 0x0A3C},
2022 {0x0A41, 0x0A42},
2023 {0x0A47, 0x0A48},
2024 {0x0A4B, 0x0A4D},
2025 {0x0A51, 0x0A51},
2026 {0x0A70, 0x0A71},
2027 {0x0A75, 0x0A75},
2028 {0x0A81, 0x0A82},
2029 {0x0ABC, 0x0ABC},
2030 {0x0AC1, 0x0AC5},
2031 {0x0AC7, 0x0AC8},
2032 {0x0ACD, 0x0ACD},
2033 {0x0AE2, 0x0AE3},
2034 {0x0AFA, 0x0AFF},
2035 {0x0B01, 0x0B01},
2036 {0x0B3C, 0x0B3C},
2037 {0x0B3F, 0x0B3F},
2038 {0x0B41, 0x0B44},
2039 {0x0B4D, 0x0B4D},
2040 {0x0B55, 0x0B56},
2041 {0x0B62, 0x0B63},
2042 {0x0B82, 0x0B82},
2043 {0x0BC0, 0x0BC0},
2044 {0x0BCD, 0x0BCD},
2045 {0x0C00, 0x0C00},
2046 {0x0C04, 0x0C04},
2047 {0x0C3C, 0x0C3C},
2048 {0x0C3E, 0x0C40},
2049 {0x0C46, 0x0C48},
2050 {0x0C4A, 0x0C4D},
2051 {0x0C55, 0x0C56},
2052 {0x0C62, 0x0C63},
2053 {0x0C81, 0x0C81},
2054 {0x0CBC, 0x0CBC},
2055 {0x0CBF, 0x0CBF},
2056 {0x0CC6, 0x0CC6},
2057 {0x0CCC, 0x0CCD},
2058 {0x0CE2, 0x0CE3},
2059 {0x0D00, 0x0D01},
2060 {0x0D3B, 0x0D3C},
2061 {0x0D41, 0x0D44},
2062 {0x0D4D, 0x0D4D},
2063 {0x0D62, 0x0D63},
2064 {0x0D81, 0x0D81},
2065 {0x0DCA, 0x0DCA},
2066 {0x0DD2, 0x0DD4},
2067 {0x0DD6, 0x0DD6},
2068 {0x0E31, 0x0E31},
2069 {0x0E34, 0x0E3A},
2070 {0x0E47, 0x0E4E},
2071 {0x0EB1, 0x0EB1},
2072 {0x0EB4, 0x0EBC},
2073 {0x0EC8, 0x0ECE},
2074 {0x0F18, 0x0F19},
2075 {0x0F35, 0x0F35},
2076 {0x0F37, 0x0F37},
2077 {0x0F39, 0x0F39},
2078 {0x0F71, 0x0F7E},
2079 {0x0F80, 0x0F84},
2080 {0x0F86, 0x0F87},
2081 {0x0F8D, 0x0F97},
2082 {0x0F99, 0x0FBC},
2083 {0x0FC6, 0x0FC6},
2084 {0x102D, 0x1030},
2085 {0x1032, 0x1037},
2086 {0x1039, 0x103A},
2087 {0x103D, 0x103E},
2088 {0x1058, 0x1059},
2089 {0x105E, 0x1060},
2090 {0x1071, 0x1074},
2091 {0x1082, 0x1082},
2092 {0x1085, 0x1086},
2093 {0x108D, 0x108D},
2094 {0x109D, 0x109D},
2095 {0x135D, 0x135F},
2096 {0x1712, 0x1714},
2097 {0x1732, 0x1733},
2098 {0x1752, 0x1753},
2099 {0x1772, 0x1773},
2100 {0x17B4, 0x17B5},
2101 {0x17B7, 0x17BD},
2102 {0x17C6, 0x17C6},
2103 {0x17C9, 0x17D3},
2104 {0x17DD, 0x17DD},
2105 {0x180B, 0x180D},
2106 {0x180F, 0x180F},
2107 {0x1885, 0x1886},
2108 {0x18A9, 0x18A9},
2109 {0x1920, 0x1922},
2110 {0x1927, 0x1928},
2111 {0x1932, 0x1932},
2112 {0x1939, 0x193B},
2113 {0x1A17, 0x1A18},
2114 {0x1A1B, 0x1A1B},
2115 {0x1A56, 0x1A56},
2116 {0x1A58, 0x1A5E},
2117 {0x1A60, 0x1A60},
2118 {0x1A62, 0x1A62},
2119 {0x1A65, 0x1A6C},
2120 {0x1A73, 0x1A7C},
2121 {0x1A7F, 0x1A7F},
2122 {0x1AB0, 0x1ABD},
2123 {0x1ABF, 0x1ACE},
2124 {0x1B00, 0x1B03},
2125 {0x1B34, 0x1B34},
2126 {0x1B36, 0x1B3A},
2127 {0x1B3C, 0x1B3C},
2128 {0x1B42, 0x1B42},
2129 {0x1B6B, 0x1B73},
2130 {0x1B80, 0x1B81},
2131 {0x1BA2, 0x1BA5},
2132 {0x1BA8, 0x1BA9},
2133 {0x1BAB, 0x1BAD},
2134 {0x1BE6, 0x1BE6},
2135 {0x1BE8, 0x1BE9},
2136 {0x1BED, 0x1BED},
2137 {0x1BEF, 0x1BF1},
2138 {0x1C2C, 0x1C33},
2139 {0x1C36, 0x1C37},
2140 {0x1CD0, 0x1CD2},
2141 {0x1CD4, 0x1CE0},
2142 {0x1CE2, 0x1CE8},
2143 {0x1CED, 0x1CED},
2144 {0x1CF4, 0x1CF4},
2145 {0x1CF8, 0x1CF9},
2146 {0x1DC0, 0x1DFF},
2147 {0x20D0, 0x20DC},
2148 {0x20E1, 0x20E1},
2149 {0x20E5, 0x20F0},
2150 {0x2CEF, 0x2CF1},
2151 {0x2D7F, 0x2D7F},
2152 {0x2DE0, 0x2DFF},
2153 {0x302A, 0x302D},
2154 {0x3099, 0x309A},
2155 {0xA66F, 0xA66F},
2156 {0xA674, 0xA67D},
2157 {0xA69E, 0xA69F},
2158 {0xA6F0, 0xA6F1},
2159 {0xA802, 0xA802},
2160 {0xA806, 0xA806},
2161 {0xA80B, 0xA80B},
2162 {0xA825, 0xA826},
2163 {0xA82C, 0xA82C},
2164 {0xA8C4, 0xA8C5},
2165 {0xA8E0, 0xA8F1},
2166 {0xA8FF, 0xA8FF},
2167 {0xA926, 0xA92D},
2168 {0xA947, 0xA951},
2169 {0xA980, 0xA982},
2170 {0xA9B3, 0xA9B3},
2171 {0xA9B6, 0xA9B9},
2172 {0xA9BC, 0xA9BD},
2173 {0xA9E5, 0xA9E5},
2174 {0xAA29, 0xAA2E},
2175 {0xAA31, 0xAA32},
2176 {0xAA35, 0xAA36},
2177 {0xAA43, 0xAA43},
2178 {0xAA4C, 0xAA4C},
2179 {0xAA7C, 0xAA7C},
2180 {0xAAB0, 0xAAB0},
2181 {0xAAB2, 0xAAB4},
2182 {0xAAB7, 0xAAB8},
2183 {0xAABE, 0xAABF},
2184 {0xAAC1, 0xAAC1},
2185 {0xAAEC, 0xAAED},
2186 {0xAAF6, 0xAAF6},
2187 {0xABE5, 0xABE5},
2188 {0xABE8, 0xABE8},
2189 {0xABED, 0xABED},
2190 {0xFB1E, 0xFB1E},
2191 {0xFE00, 0xFE0F},
2192 {0xFE20, 0xFE2F},
2193 {0x101FD, 0x101FD},
2194 {0x102E0, 0x102E0},
2195 {0x10376, 0x1037A},
2196 {0x10A01, 0x10A03},
2197 {0x10A05, 0x10A06},
2198 {0x10A0C, 0x10A0F},
2199 {0x10A38, 0x10A3A},
2200 {0x10A3F, 0x10A3F},
2201 {0x10AE5, 0x10AE6},
2202 {0x10D24, 0x10D27},
2203 {0x10D69, 0x10D6D},
2204 {0x10EAB, 0x10EAC},
2205 {0x10EFC, 0x10EFF},
2206 {0x10F46, 0x10F50},
2207 {0x10F82, 0x10F85},
2208 {0x11001, 0x11001},
2209 {0x11038, 0x11046},
2210 {0x11070, 0x11070},
2211 {0x11073, 0x11074},
2212 {0x1107F, 0x11081},
2213 {0x110B3, 0x110B6},
2214 {0x110B9, 0x110BA},
2215 {0x110C2, 0x110C2},
2216 {0x11100, 0x11102},
2217 {0x11127, 0x1112B},
2218 {0x1112D, 0x11134},
2219 {0x11173, 0x11173},
2220 {0x11180, 0x11181},
2221 {0x111B6, 0x111BE},
2222 {0x111C9, 0x111CC},
2223 {0x111CF, 0x111CF},
2224 {0x1122F, 0x11231},
2225 {0x11234, 0x11234},
2226 {0x11236, 0x11237},
2227 {0x1123E, 0x1123E},
2228 {0x11241, 0x11241},
2229 {0x112DF, 0x112DF},
2230 {0x112E3, 0x112EA},
2231 {0x11300, 0x11301},
2232 {0x1133B, 0x1133C},
2233 {0x11340, 0x11340},
2234 {0x11366, 0x1136C},
2235 {0x11370, 0x11374},
2236 {0x113BB, 0x113C0},
2237 {0x113CE, 0x113CE},
2238 {0x113D0, 0x113D0},
2239 {0x113D2, 0x113D2},
2240 {0x113E1, 0x113E2},
2241 {0x11438, 0x1143F},
2242 {0x11442, 0x11444},
2243 {0x11446, 0x11446},
2244 {0x1145E, 0x1145E},
2245 {0x114B3, 0x114B8},
2246 {0x114BA, 0x114BA},
2247 {0x114BF, 0x114C0},
2248 {0x114C2, 0x114C3},
2249 {0x115B2, 0x115B5},
2250 {0x115BC, 0x115BD},
2251 {0x115BF, 0x115C0},
2252 {0x115DC, 0x115DD},
2253 {0x11633, 0x1163A},
2254 {0x1163D, 0x1163D},
2255 {0x1163F, 0x11640},
2256 {0x116AB, 0x116AB},
2257 {0x116AD, 0x116AD},
2258 {0x116B0, 0x116B5},
2259 {0x116B7, 0x116B7},
2260 {0x1171D, 0x1171D},
2261 {0x1171F, 0x1171F},
2262 {0x11722, 0x11725},
2263 {0x11727, 0x1172B},
2264 {0x1182F, 0x11837},
2265 {0x11839, 0x1183A},
2266 {0x1193B, 0x1193C},
2267 {0x1193E, 0x1193E},
2268 {0x11943, 0x11943},
2269 {0x119D4, 0x119D7},
2270 {0x119DA, 0x119DB},
2271 {0x119E0, 0x119E0},
2272 {0x11A01, 0x11A0A},
2273 {0x11A33, 0x11A38},
2274 {0x11A3B, 0x11A3E},
2275 {0x11A47, 0x11A47},
2276 {0x11A51, 0x11A56},
2277 {0x11A59, 0x11A5B},
2278 {0x11A8A, 0x11A96},
2279 {0x11A98, 0x11A99},
2280 {0x11C30, 0x11C36},
2281 {0x11C38, 0x11C3D},
2282 {0x11C3F, 0x11C3F},
2283 {0x11C92, 0x11CA7},
2284 {0x11CAA, 0x11CB0},
2285 {0x11CB2, 0x11CB3},
2286 {0x11CB5, 0x11CB6},
2287 {0x11D31, 0x11D36},
2288 {0x11D3A, 0x11D3A},
2289 {0x11D3C, 0x11D3D},
2290 {0x11D3F, 0x11D45},
2291 {0x11D47, 0x11D47},
2292 {0x11D90, 0x11D91},
2293 {0x11D95, 0x11D95},
2294 {0x11D97, 0x11D97},
2295 {0x11EF3, 0x11EF4},
2296 {0x11F00, 0x11F01},
2297 {0x11F36, 0x11F3A},
2298 {0x11F40, 0x11F40},
2299 {0x11F42, 0x11F42},
2300 {0x11F5A, 0x11F5A},
2301 {0x13440, 0x13440},
2302 {0x13447, 0x13455},
2303 {0x1611E, 0x16129},
2304 {0x1612D, 0x1612F},
2305 {0x16AF0, 0x16AF4},
2306 {0x16B30, 0x16B36},
2307 {0x16F4F, 0x16F4F},
2308 {0x16F8F, 0x16F92},
2309 {0x16FE4, 0x16FE4},
2310 {0x1BC9D, 0x1BC9E},
2311 {0x1CF00, 0x1CF2D},
2312 {0x1CF30, 0x1CF46},
2313 {0x1D167, 0x1D169},
2314 {0x1D17B, 0x1D182},
2315 {0x1D185, 0x1D18B},
2316 {0x1D1AA, 0x1D1AD},
2317 {0x1D242, 0x1D244},
2318 {0x1DA00, 0x1DA36},
2319 {0x1DA3B, 0x1DA6C},
2320 {0x1DA75, 0x1DA75},
2321 {0x1DA84, 0x1DA84},
2322 {0x1DA9B, 0x1DA9F},
2323 {0x1DAA1, 0x1DAAF},
2324 {0x1E000, 0x1E006},
2325 {0x1E008, 0x1E018},
2326 {0x1E01B, 0x1E021},
2327 {0x1E023, 0x1E024},
2328 {0x1E026, 0x1E02A},
2329 {0x1E08F, 0x1E08F},
2330 {0x1E130, 0x1E136},
2331 {0x1E2AE, 0x1E2AE},
2332 {0x1E2EC, 0x1E2EF},
2333 {0x1E4EC, 0x1E4EF},
2334 {0x1E5EE, 0x1E5EF},
2335 {0x1E8D0, 0x1E8D6},
2336 {0x1E944, 0x1E94A},
2337 {0xE0100, 0xE01EF},
2338 };
2339
2341 inline constexpr code_range gc_Mc_ranges[] {
2342 {0x0903, 0x0903},
2343 {0x093B, 0x093B},
2344 {0x093E, 0x0940},
2345 {0x0949, 0x094C},
2346 {0x094E, 0x094F},
2347 {0x0982, 0x0983},
2348 {0x09BE, 0x09C0},
2349 {0x09C7, 0x09C8},
2350 {0x09CB, 0x09CC},
2351 {0x09D7, 0x09D7},
2352 {0x0A03, 0x0A03},
2353 {0x0A3E, 0x0A40},
2354 {0x0A83, 0x0A83},
2355 {0x0ABE, 0x0AC0},
2356 {0x0AC9, 0x0AC9},
2357 {0x0ACB, 0x0ACC},
2358 {0x0B02, 0x0B03},
2359 {0x0B3E, 0x0B3E},
2360 {0x0B40, 0x0B40},
2361 {0x0B47, 0x0B48},
2362 {0x0B4B, 0x0B4C},
2363 {0x0B57, 0x0B57},
2364 {0x0BBE, 0x0BBF},
2365 {0x0BC1, 0x0BC2},
2366 {0x0BC6, 0x0BC8},
2367 {0x0BCA, 0x0BCC},
2368 {0x0BD7, 0x0BD7},
2369 {0x0C01, 0x0C03},
2370 {0x0C41, 0x0C44},
2371 {0x0C82, 0x0C83},
2372 {0x0CBE, 0x0CBE},
2373 {0x0CC0, 0x0CC4},
2374 {0x0CC7, 0x0CC8},
2375 {0x0CCA, 0x0CCB},
2376 {0x0CD5, 0x0CD6},
2377 {0x0CF3, 0x0CF3},
2378 {0x0D02, 0x0D03},
2379 {0x0D3E, 0x0D40},
2380 {0x0D46, 0x0D48},
2381 {0x0D4A, 0x0D4C},
2382 {0x0D57, 0x0D57},
2383 {0x0D82, 0x0D83},
2384 {0x0DCF, 0x0DD1},
2385 {0x0DD8, 0x0DDF},
2386 {0x0DF2, 0x0DF3},
2387 {0x0F3E, 0x0F3F},
2388 {0x0F7F, 0x0F7F},
2389 {0x102B, 0x102C},
2390 {0x1031, 0x1031},
2391 {0x1038, 0x1038},
2392 {0x103B, 0x103C},
2393 {0x1056, 0x1057},
2394 {0x1062, 0x1064},
2395 {0x1067, 0x106D},
2396 {0x1083, 0x1084},
2397 {0x1087, 0x108C},
2398 {0x108F, 0x108F},
2399 {0x109A, 0x109C},
2400 {0x1715, 0x1715},
2401 {0x1734, 0x1734},
2402 {0x17B6, 0x17B6},
2403 {0x17BE, 0x17C5},
2404 {0x17C7, 0x17C8},
2405 {0x1923, 0x1926},
2406 {0x1929, 0x192B},
2407 {0x1930, 0x1931},
2408 {0x1933, 0x1938},
2409 {0x1A19, 0x1A1A},
2410 {0x1A55, 0x1A55},
2411 {0x1A57, 0x1A57},
2412 {0x1A61, 0x1A61},
2413 {0x1A63, 0x1A64},
2414 {0x1A6D, 0x1A72},
2415 {0x1B04, 0x1B04},
2416 {0x1B35, 0x1B35},
2417 {0x1B3B, 0x1B3B},
2418 {0x1B3D, 0x1B41},
2419 {0x1B43, 0x1B44},
2420 {0x1B82, 0x1B82},
2421 {0x1BA1, 0x1BA1},
2422 {0x1BA6, 0x1BA7},
2423 {0x1BAA, 0x1BAA},
2424 {0x1BE7, 0x1BE7},
2425 {0x1BEA, 0x1BEC},
2426 {0x1BEE, 0x1BEE},
2427 {0x1BF2, 0x1BF3},
2428 {0x1C24, 0x1C2B},
2429 {0x1C34, 0x1C35},
2430 {0x1CE1, 0x1CE1},
2431 {0x1CF7, 0x1CF7},
2432 {0x302E, 0x302F},
2433 {0xA823, 0xA824},
2434 {0xA827, 0xA827},
2435 {0xA880, 0xA881},
2436 {0xA8B4, 0xA8C3},
2437 {0xA952, 0xA953},
2438 {0xA983, 0xA983},
2439 {0xA9B4, 0xA9B5},
2440 {0xA9BA, 0xA9BB},
2441 {0xA9BE, 0xA9C0},
2442 {0xAA2F, 0xAA30},
2443 {0xAA33, 0xAA34},
2444 {0xAA4D, 0xAA4D},
2445 {0xAA7B, 0xAA7B},
2446 {0xAA7D, 0xAA7D},
2447 {0xAAEB, 0xAAEB},
2448 {0xAAEE, 0xAAEF},
2449 {0xAAF5, 0xAAF5},
2450 {0xABE3, 0xABE4},
2451 {0xABE6, 0xABE7},
2452 {0xABE9, 0xABEA},
2453 {0xABEC, 0xABEC},
2454 {0x11000, 0x11000},
2455 {0x11002, 0x11002},
2456 {0x11082, 0x11082},
2457 {0x110B0, 0x110B2},
2458 {0x110B7, 0x110B8},
2459 {0x1112C, 0x1112C},
2460 {0x11145, 0x11146},
2461 {0x11182, 0x11182},
2462 {0x111B3, 0x111B5},
2463 {0x111BF, 0x111C0},
2464 {0x111CE, 0x111CE},
2465 {0x1122C, 0x1122E},
2466 {0x11232, 0x11233},
2467 {0x11235, 0x11235},
2468 {0x112E0, 0x112E2},
2469 {0x11302, 0x11303},
2470 {0x1133E, 0x1133F},
2471 {0x11341, 0x11344},
2472 {0x11347, 0x11348},
2473 {0x1134B, 0x1134D},
2474 {0x11357, 0x11357},
2475 {0x11362, 0x11363},
2476 {0x113B8, 0x113BA},
2477 {0x113C2, 0x113C2},
2478 {0x113C5, 0x113C5},
2479 {0x113C7, 0x113CA},
2480 {0x113CC, 0x113CD},
2481 {0x113CF, 0x113CF},
2482 {0x11435, 0x11437},
2483 {0x11440, 0x11441},
2484 {0x11445, 0x11445},
2485 {0x114B0, 0x114B2},
2486 {0x114B9, 0x114B9},
2487 {0x114BB, 0x114BE},
2488 {0x114C1, 0x114C1},
2489 {0x115AF, 0x115B1},
2490 {0x115B8, 0x115BB},
2491 {0x115BE, 0x115BE},
2492 {0x11630, 0x11632},
2493 {0x1163B, 0x1163C},
2494 {0x1163E, 0x1163E},
2495 {0x116AC, 0x116AC},
2496 {0x116AE, 0x116AF},
2497 {0x116B6, 0x116B6},
2498 {0x1171E, 0x1171E},
2499 {0x11720, 0x11721},
2500 {0x11726, 0x11726},
2501 {0x1182C, 0x1182E},
2502 {0x11838, 0x11838},
2503 {0x11930, 0x11935},
2504 {0x11937, 0x11938},
2505 {0x1193D, 0x1193D},
2506 {0x11940, 0x11940},
2507 {0x11942, 0x11942},
2508 {0x119D1, 0x119D3},
2509 {0x119DC, 0x119DF},
2510 {0x119E4, 0x119E4},
2511 {0x11A39, 0x11A39},
2512 {0x11A57, 0x11A58},
2513 {0x11A97, 0x11A97},
2514 {0x11C2F, 0x11C2F},
2515 {0x11C3E, 0x11C3E},
2516 {0x11CA9, 0x11CA9},
2517 {0x11CB1, 0x11CB1},
2518 {0x11CB4, 0x11CB4},
2519 {0x11D8A, 0x11D8E},
2520 {0x11D93, 0x11D94},
2521 {0x11D96, 0x11D96},
2522 {0x11EF5, 0x11EF6},
2523 {0x11F03, 0x11F03},
2524 {0x11F34, 0x11F35},
2525 {0x11F3E, 0x11F3F},
2526 {0x11F41, 0x11F41},
2527 {0x1612A, 0x1612C},
2528 {0x16F51, 0x16F87},
2529 {0x16FF0, 0x16FF1},
2530 {0x1D165, 0x1D166},
2531 {0x1D16D, 0x1D172},
2532 };
2533
2535 inline constexpr code_range gc_Me_ranges[] {
2536 {0x0488, 0x0489},
2537 {0x1ABE, 0x1ABE},
2538 {0x20DD, 0x20E0},
2539 {0x20E2, 0x20E4},
2540 {0xA670, 0xA672},
2541 };
2542
2544 inline constexpr code_range gc_Nd_ranges[] {
2545 {0x0030, 0x0039},
2546 {0x0660, 0x0669},
2547 {0x06F0, 0x06F9},
2548 {0x07C0, 0x07C9},
2549 {0x0966, 0x096F},
2550 {0x09E6, 0x09EF},
2551 {0x0A66, 0x0A6F},
2552 {0x0AE6, 0x0AEF},
2553 {0x0B66, 0x0B6F},
2554 {0x0BE6, 0x0BEF},
2555 {0x0C66, 0x0C6F},
2556 {0x0CE6, 0x0CEF},
2557 {0x0D66, 0x0D6F},
2558 {0x0DE6, 0x0DEF},
2559 {0x0E50, 0x0E59},
2560 {0x0ED0, 0x0ED9},
2561 {0x0F20, 0x0F29},
2562 {0x1040, 0x1049},
2563 {0x1090, 0x1099},
2564 {0x17E0, 0x17E9},
2565 {0x1810, 0x1819},
2566 {0x1946, 0x194F},
2567 {0x19D0, 0x19D9},
2568 {0x1A80, 0x1A89},
2569 {0x1A90, 0x1A99},
2570 {0x1B50, 0x1B59},
2571 {0x1BB0, 0x1BB9},
2572 {0x1C40, 0x1C49},
2573 {0x1C50, 0x1C59},
2574 {0xA620, 0xA629},
2575 {0xA8D0, 0xA8D9},
2576 {0xA900, 0xA909},
2577 {0xA9D0, 0xA9D9},
2578 {0xA9F0, 0xA9F9},
2579 {0xAA50, 0xAA59},
2580 {0xABF0, 0xABF9},
2581 {0xFF10, 0xFF19},
2582 {0x104A0, 0x104A9},
2583 {0x10D30, 0x10D39},
2584 {0x10D40, 0x10D49},
2585 {0x11066, 0x1106F},
2586 {0x110F0, 0x110F9},
2587 {0x11136, 0x1113F},
2588 {0x111D0, 0x111D9},
2589 {0x112F0, 0x112F9},
2590 {0x11450, 0x11459},
2591 {0x114D0, 0x114D9},
2592 {0x11650, 0x11659},
2593 {0x116C0, 0x116C9},
2594 {0x116D0, 0x116E3},
2595 {0x11730, 0x11739},
2596 {0x118E0, 0x118E9},
2597 {0x11950, 0x11959},
2598 {0x11BF0, 0x11BF9},
2599 {0x11C50, 0x11C59},
2600 {0x11D50, 0x11D59},
2601 {0x11DA0, 0x11DA9},
2602 {0x11F50, 0x11F59},
2603 {0x16130, 0x16139},
2604 {0x16A60, 0x16A69},
2605 {0x16AC0, 0x16AC9},
2606 {0x16B50, 0x16B59},
2607 {0x16D70, 0x16D79},
2608 {0x1CCF0, 0x1CCF9},
2609 {0x1D7CE, 0x1D7FF},
2610 {0x1E140, 0x1E149},
2611 {0x1E2F0, 0x1E2F9},
2612 {0x1E4F0, 0x1E4F9},
2613 {0x1E5F1, 0x1E5FA},
2614 {0x1E950, 0x1E959},
2615 {0x1FBF0, 0x1FBF9},
2616 };
2617
2619 inline constexpr code_range gc_Nl_ranges[] {
2620 {0x16EE, 0x16F0},
2621 {0x2160, 0x2182},
2622 {0x2185, 0x2188},
2623 {0x3007, 0x3007},
2624 {0x3021, 0x3029},
2625 {0x3038, 0x303A},
2626 {0xA6E6, 0xA6EF},
2627 {0x10140, 0x10174},
2628 {0x10341, 0x10341},
2629 {0x1034A, 0x1034A},
2630 {0x103D1, 0x103D5},
2631 {0x12400, 0x1246E},
2632 };
2633
2635 inline constexpr code_range gc_No_ranges[] {
2636 {0x00B2, 0x00B3},
2637 {0x00B9, 0x00B9},
2638 {0x00BC, 0x00BE},
2639 {0x09F4, 0x09F9},
2640 {0x0B72, 0x0B77},
2641 {0x0BF0, 0x0BF2},
2642 {0x0C78, 0x0C7E},
2643 {0x0D58, 0x0D5E},
2644 {0x0D70, 0x0D78},
2645 {0x0F2A, 0x0F33},
2646 {0x1369, 0x137C},
2647 {0x17F0, 0x17F9},
2648 {0x19DA, 0x19DA},
2649 {0x2070, 0x2070},
2650 {0x2074, 0x2079},
2651 {0x2080, 0x2089},
2652 {0x2150, 0x215F},
2653 {0x2189, 0x2189},
2654 {0x2460, 0x249B},
2655 {0x24EA, 0x24FF},
2656 {0x2776, 0x2793},
2657 {0x2CFD, 0x2CFD},
2658 {0x3192, 0x3195},
2659 {0x3220, 0x3229},
2660 {0x3248, 0x324F},
2661 {0x3251, 0x325F},
2662 {0x3280, 0x3289},
2663 {0x32B1, 0x32BF},
2664 {0xA830, 0xA835},
2665 {0x10107, 0x10133},
2666 {0x10175, 0x10178},
2667 {0x1018A, 0x1018B},
2668 {0x102E1, 0x102FB},
2669 {0x10320, 0x10323},
2670 {0x10858, 0x1085F},
2671 {0x10879, 0x1087F},
2672 {0x108A7, 0x108AF},
2673 {0x108FB, 0x108FF},
2674 {0x10916, 0x1091B},
2675 {0x109BC, 0x109BD},
2676 {0x109C0, 0x109CF},
2677 {0x109D2, 0x109FF},
2678 {0x10A40, 0x10A48},
2679 {0x10A7D, 0x10A7E},
2680 {0x10A9D, 0x10A9F},
2681 {0x10AEB, 0x10AEF},
2682 {0x10B58, 0x10B5F},
2683 {0x10B78, 0x10B7F},
2684 {0x10BA9, 0x10BAF},
2685 {0x10CFA, 0x10CFF},
2686 {0x10E60, 0x10E7E},
2687 {0x10F1D, 0x10F26},
2688 {0x10F51, 0x10F54},
2689 {0x10FC5, 0x10FCB},
2690 {0x11052, 0x11065},
2691 {0x111E1, 0x111F4},
2692 {0x1173A, 0x1173B},
2693 {0x118EA, 0x118F2},
2694 {0x11C5A, 0x11C6C},
2695 {0x11FC0, 0x11FD4},
2696 {0x16B5B, 0x16B61},
2697 {0x16E80, 0x16E96},
2698 {0x1D2C0, 0x1D2D3},
2699 {0x1D2E0, 0x1D2F3},
2700 {0x1D360, 0x1D378},
2701 {0x1E8C7, 0x1E8CF},
2702 {0x1EC71, 0x1ECAB},
2703 {0x1ECAD, 0x1ECAF},
2704 {0x1ECB1, 0x1ECB4},
2705 {0x1ED01, 0x1ED2D},
2706 {0x1ED2F, 0x1ED3D},
2707 {0x1F100, 0x1F10C},
2708 };
2709
2711 inline constexpr code_range gc_Pc_ranges[] {
2712 {0x005F, 0x005F},
2713 {0x203F, 0x2040},
2714 {0x2054, 0x2054},
2715 {0xFE33, 0xFE34},
2716 {0xFE4D, 0xFE4F},
2717 {0xFF3F, 0xFF3F},
2718 };
2719
2721 inline constexpr code_range gc_Pd_ranges[] {
2722 {0x002D, 0x002D},
2723 {0x058A, 0x058A},
2724 {0x05BE, 0x05BE},
2725 {0x1400, 0x1400},
2726 {0x1806, 0x1806},
2727 {0x2010, 0x2015},
2728 {0x2E17, 0x2E17},
2729 {0x2E1A, 0x2E1A},
2730 {0x2E3A, 0x2E3B},
2731 {0x2E40, 0x2E40},
2732 {0x2E5D, 0x2E5D},
2733 {0x301C, 0x301C},
2734 {0x3030, 0x3030},
2735 {0x30A0, 0x30A0},
2736 {0xFE31, 0xFE32},
2737 {0xFE58, 0xFE58},
2738 {0xFE63, 0xFE63},
2739 {0xFF0D, 0xFF0D},
2740 {0x10D6E, 0x10D6E},
2741 {0x10EAD, 0x10EAD},
2742 };
2743
2745 inline constexpr code_range gc_Ps_ranges[] {
2746 {0x0028, 0x0028},
2747 {0x005B, 0x005B},
2748 {0x007B, 0x007B},
2749 {0x0F3A, 0x0F3A},
2750 {0x0F3C, 0x0F3C},
2751 {0x169B, 0x169B},
2752 {0x201A, 0x201A},
2753 {0x201E, 0x201E},
2754 {0x2045, 0x2045},
2755 {0x207D, 0x207D},
2756 {0x208D, 0x208D},
2757 {0x2308, 0x2308},
2758 {0x230A, 0x230A},
2759 {0x2329, 0x2329},
2760 {0x2768, 0x2768},
2761 {0x276A, 0x276A},
2762 {0x276C, 0x276C},
2763 {0x276E, 0x276E},
2764 {0x2770, 0x2770},
2765 {0x2772, 0x2772},
2766 {0x2774, 0x2774},
2767 {0x27C5, 0x27C5},
2768 {0x27E6, 0x27E6},
2769 {0x27E8, 0x27E8},
2770 {0x27EA, 0x27EA},
2771 {0x27EC, 0x27EC},
2772 {0x27EE, 0x27EE},
2773 {0x2983, 0x2983},
2774 {0x2985, 0x2985},
2775 {0x2987, 0x2987},
2776 {0x2989, 0x2989},
2777 {0x298B, 0x298B},
2778 {0x298D, 0x298D},
2779 {0x298F, 0x298F},
2780 {0x2991, 0x2991},
2781 {0x2993, 0x2993},
2782 {0x2995, 0x2995},
2783 {0x2997, 0x2997},
2784 {0x29D8, 0x29D8},
2785 {0x29DA, 0x29DA},
2786 {0x29FC, 0x29FC},
2787 {0x2E22, 0x2E22},
2788 {0x2E24, 0x2E24},
2789 {0x2E26, 0x2E26},
2790 {0x2E28, 0x2E28},
2791 {0x2E42, 0x2E42},
2792 {0x2E55, 0x2E55},
2793 {0x2E57, 0x2E57},
2794 {0x2E59, 0x2E59},
2795 {0x2E5B, 0x2E5B},
2796 {0x3008, 0x3008},
2797 {0x300A, 0x300A},
2798 {0x300C, 0x300C},
2799 {0x300E, 0x300E},
2800 {0x3010, 0x3010},
2801 {0x3014, 0x3014},
2802 {0x3016, 0x3016},
2803 {0x3018, 0x3018},
2804 {0x301A, 0x301A},
2805 {0x301D, 0x301D},
2806 {0xFD3F, 0xFD3F},
2807 {0xFE17, 0xFE17},
2808 {0xFE35, 0xFE35},
2809 {0xFE37, 0xFE37},
2810 {0xFE39, 0xFE39},
2811 {0xFE3B, 0xFE3B},
2812 {0xFE3D, 0xFE3D},
2813 {0xFE3F, 0xFE3F},
2814 {0xFE41, 0xFE41},
2815 {0xFE43, 0xFE43},
2816 {0xFE47, 0xFE47},
2817 {0xFE59, 0xFE59},
2818 {0xFE5B, 0xFE5B},
2819 {0xFE5D, 0xFE5D},
2820 {0xFF08, 0xFF08},
2821 {0xFF3B, 0xFF3B},
2822 {0xFF5B, 0xFF5B},
2823 {0xFF5F, 0xFF5F},
2824 {0xFF62, 0xFF62},
2825 };
2826
2828 inline constexpr code_range gc_Pe_ranges[] {
2829 {0x0029, 0x0029},
2830 {0x005D, 0x005D},
2831 {0x007D, 0x007D},
2832 {0x0F3B, 0x0F3B},
2833 {0x0F3D, 0x0F3D},
2834 {0x169C, 0x169C},
2835 {0x2046, 0x2046},
2836 {0x207E, 0x207E},
2837 {0x208E, 0x208E},
2838 {0x2309, 0x2309},
2839 {0x230B, 0x230B},
2840 {0x232A, 0x232A},
2841 {0x2769, 0x2769},
2842 {0x276B, 0x276B},
2843 {0x276D, 0x276D},
2844 {0x276F, 0x276F},
2845 {0x2771, 0x2771},
2846 {0x2773, 0x2773},
2847 {0x2775, 0x2775},
2848 {0x27C6, 0x27C6},
2849 {0x27E7, 0x27E7},
2850 {0x27E9, 0x27E9},
2851 {0x27EB, 0x27EB},
2852 {0x27ED, 0x27ED},
2853 {0x27EF, 0x27EF},
2854 {0x2984, 0x2984},
2855 {0x2986, 0x2986},
2856 {0x2988, 0x2988},
2857 {0x298A, 0x298A},
2858 {0x298C, 0x298C},
2859 {0x298E, 0x298E},
2860 {0x2990, 0x2990},
2861 {0x2992, 0x2992},
2862 {0x2994, 0x2994},
2863 {0x2996, 0x2996},
2864 {0x2998, 0x2998},
2865 {0x29D9, 0x29D9},
2866 {0x29DB, 0x29DB},
2867 {0x29FD, 0x29FD},
2868 {0x2E23, 0x2E23},
2869 {0x2E25, 0x2E25},
2870 {0x2E27, 0x2E27},
2871 {0x2E29, 0x2E29},
2872 {0x2E56, 0x2E56},
2873 {0x2E58, 0x2E58},
2874 {0x2E5A, 0x2E5A},
2875 {0x2E5C, 0x2E5C},
2876 {0x3009, 0x3009},
2877 {0x300B, 0x300B},
2878 {0x300D, 0x300D},
2879 {0x300F, 0x300F},
2880 {0x3011, 0x3011},
2881 {0x3015, 0x3015},
2882 {0x3017, 0x3017},
2883 {0x3019, 0x3019},
2884 {0x301B, 0x301B},
2885 {0x301E, 0x301F},
2886 {0xFD3E, 0xFD3E},
2887 {0xFE18, 0xFE18},
2888 {0xFE36, 0xFE36},
2889 {0xFE38, 0xFE38},
2890 {0xFE3A, 0xFE3A},
2891 {0xFE3C, 0xFE3C},
2892 {0xFE3E, 0xFE3E},
2893 {0xFE40, 0xFE40},
2894 {0xFE42, 0xFE42},
2895 {0xFE44, 0xFE44},
2896 {0xFE48, 0xFE48},
2897 {0xFE5A, 0xFE5A},
2898 {0xFE5C, 0xFE5C},
2899 {0xFE5E, 0xFE5E},
2900 {0xFF09, 0xFF09},
2901 {0xFF3D, 0xFF3D},
2902 {0xFF5D, 0xFF5D},
2903 {0xFF60, 0xFF60},
2904 {0xFF63, 0xFF63},
2905 };
2906
2908 inline constexpr code_range gc_Pi_ranges[] {
2909 {0x00AB, 0x00AB},
2910 {0x2018, 0x2018},
2911 {0x201B, 0x201C},
2912 {0x201F, 0x201F},
2913 {0x2039, 0x2039},
2914 {0x2E02, 0x2E02},
2915 {0x2E04, 0x2E04},
2916 {0x2E09, 0x2E09},
2917 {0x2E0C, 0x2E0C},
2918 {0x2E1C, 0x2E1C},
2919 {0x2E20, 0x2E20},
2920 };
2921
2923 inline constexpr code_range gc_Pf_ranges[] {
2924 {0x00BB, 0x00BB},
2925 {0x2019, 0x2019},
2926 {0x201D, 0x201D},
2927 {0x203A, 0x203A},
2928 {0x2E03, 0x2E03},
2929 {0x2E05, 0x2E05},
2930 {0x2E0A, 0x2E0A},
2931 {0x2E0D, 0x2E0D},
2932 {0x2E1D, 0x2E1D},
2933 {0x2E21, 0x2E21},
2934 };
2935
2937 inline constexpr code_range gc_Po_ranges[] {
2938 {0x0021, 0x0023},
2939 {0x0025, 0x0027},
2940 {0x002A, 0x002A},
2941 {0x002C, 0x002C},
2942 {0x002E, 0x002F},
2943 {0x003A, 0x003B},
2944 {0x003F, 0x0040},
2945 {0x005C, 0x005C},
2946 {0x00A1, 0x00A1},
2947 {0x00A7, 0x00A7},
2948 {0x00B6, 0x00B7},
2949 {0x00BF, 0x00BF},
2950 {0x037E, 0x037E},
2951 {0x0387, 0x0387},
2952 {0x055A, 0x055F},
2953 {0x0589, 0x0589},
2954 {0x05C0, 0x05C0},
2955 {0x05C3, 0x05C3},
2956 {0x05C6, 0x05C6},
2957 {0x05F3, 0x05F4},
2958 {0x0609, 0x060A},
2959 {0x060C, 0x060D},
2960 {0x061B, 0x061B},
2961 {0x061D, 0x061F},
2962 {0x066A, 0x066D},
2963 {0x06D4, 0x06D4},
2964 {0x0700, 0x070D},
2965 {0x07F7, 0x07F9},
2966 {0x0830, 0x083E},
2967 {0x085E, 0x085E},
2968 {0x0964, 0x0965},
2969 {0x0970, 0x0970},
2970 {0x09FD, 0x09FD},
2971 {0x0A76, 0x0A76},
2972 {0x0AF0, 0x0AF0},
2973 {0x0C77, 0x0C77},
2974 {0x0C84, 0x0C84},
2975 {0x0DF4, 0x0DF4},
2976 {0x0E4F, 0x0E4F},
2977 {0x0E5A, 0x0E5B},
2978 {0x0F04, 0x0F12},
2979 {0x0F14, 0x0F14},
2980 {0x0F85, 0x0F85},
2981 {0x0FD0, 0x0FD4},
2982 {0x0FD9, 0x0FDA},
2983 {0x104A, 0x104F},
2984 {0x10FB, 0x10FB},
2985 {0x1360, 0x1368},
2986 {0x166E, 0x166E},
2987 {0x16EB, 0x16ED},
2988 {0x1735, 0x1736},
2989 {0x17D4, 0x17D6},
2990 {0x17D8, 0x17DA},
2991 {0x1800, 0x1805},
2992 {0x1807, 0x180A},
2993 {0x1944, 0x1945},
2994 {0x1A1E, 0x1A1F},
2995 {0x1AA0, 0x1AA6},
2996 {0x1AA8, 0x1AAD},
2997 {0x1B4E, 0x1B4F},
2998 {0x1B5A, 0x1B60},
2999 {0x1B7D, 0x1B7F},
3000 {0x1BFC, 0x1BFF},
3001 {0x1C3B, 0x1C3F},
3002 {0x1C7E, 0x1C7F},
3003 {0x1CC0, 0x1CC7},
3004 {0x1CD3, 0x1CD3},
3005 {0x2016, 0x2017},
3006 {0x2020, 0x2027},
3007 {0x2030, 0x2038},
3008 {0x203B, 0x203E},
3009 {0x2041, 0x2043},
3010 {0x2047, 0x2051},
3011 {0x2053, 0x2053},
3012 {0x2055, 0x205E},
3013 {0x2CF9, 0x2CFC},
3014 {0x2CFE, 0x2CFF},
3015 {0x2D70, 0x2D70},
3016 {0x2E00, 0x2E01},
3017 {0x2E06, 0x2E08},
3018 {0x2E0B, 0x2E0B},
3019 {0x2E0E, 0x2E16},
3020 {0x2E18, 0x2E19},
3021 {0x2E1B, 0x2E1B},
3022 {0x2E1E, 0x2E1F},
3023 {0x2E2A, 0x2E2E},
3024 {0x2E30, 0x2E39},
3025 {0x2E3C, 0x2E3F},
3026 {0x2E41, 0x2E41},
3027 {0x2E43, 0x2E4F},
3028 {0x2E52, 0x2E54},
3029 {0x3001, 0x3003},
3030 {0x303D, 0x303D},
3031 {0x30FB, 0x30FB},
3032 {0xA4FE, 0xA4FF},
3033 {0xA60D, 0xA60F},
3034 {0xA673, 0xA673},
3035 {0xA67E, 0xA67E},
3036 {0xA6F2, 0xA6F7},
3037 {0xA874, 0xA877},
3038 {0xA8CE, 0xA8CF},
3039 {0xA8F8, 0xA8FA},
3040 {0xA8FC, 0xA8FC},
3041 {0xA92E, 0xA92F},
3042 {0xA95F, 0xA95F},
3043 {0xA9C1, 0xA9CD},
3044 {0xA9DE, 0xA9DF},
3045 {0xAA5C, 0xAA5F},
3046 {0xAADE, 0xAADF},
3047 {0xAAF0, 0xAAF1},
3048 {0xABEB, 0xABEB},
3049 {0xFE10, 0xFE16},
3050 {0xFE19, 0xFE19},
3051 {0xFE30, 0xFE30},
3052 {0xFE45, 0xFE46},
3053 {0xFE49, 0xFE4C},
3054 {0xFE50, 0xFE52},
3055 {0xFE54, 0xFE57},
3056 {0xFE5F, 0xFE61},
3057 {0xFE68, 0xFE68},
3058 {0xFE6A, 0xFE6B},
3059 {0xFF01, 0xFF03},
3060 {0xFF05, 0xFF07},
3061 {0xFF0A, 0xFF0A},
3062 {0xFF0C, 0xFF0C},
3063 {0xFF0E, 0xFF0F},
3064 {0xFF1A, 0xFF1B},
3065 {0xFF1F, 0xFF20},
3066 {0xFF3C, 0xFF3C},
3067 {0xFF61, 0xFF61},
3068 {0xFF64, 0xFF65},
3069 {0x10100, 0x10102},
3070 {0x1039F, 0x1039F},
3071 {0x103D0, 0x103D0},
3072 {0x1056F, 0x1056F},
3073 {0x10857, 0x10857},
3074 {0x1091F, 0x1091F},
3075 {0x1093F, 0x1093F},
3076 {0x10A50, 0x10A58},
3077 {0x10A7F, 0x10A7F},
3078 {0x10AF0, 0x10AF6},
3079 {0x10B39, 0x10B3F},
3080 {0x10B99, 0x10B9C},
3081 {0x10F55, 0x10F59},
3082 {0x10F86, 0x10F89},
3083 {0x11047, 0x1104D},
3084 {0x110BB, 0x110BC},
3085 {0x110BE, 0x110C1},
3086 {0x11140, 0x11143},
3087 {0x11174, 0x11175},
3088 {0x111C5, 0x111C8},
3089 {0x111CD, 0x111CD},
3090 {0x111DB, 0x111DB},
3091 {0x111DD, 0x111DF},
3092 {0x11238, 0x1123D},
3093 {0x112A9, 0x112A9},
3094 {0x113D4, 0x113D5},
3095 {0x113D7, 0x113D8},
3096 {0x1144B, 0x1144F},
3097 {0x1145A, 0x1145B},
3098 {0x1145D, 0x1145D},
3099 {0x114C6, 0x114C6},
3100 {0x115C1, 0x115D7},
3101 {0x11641, 0x11643},
3102 {0x11660, 0x1166C},
3103 {0x116B9, 0x116B9},
3104 {0x1173C, 0x1173E},
3105 {0x1183B, 0x1183B},
3106 {0x11944, 0x11946},
3107 {0x119E2, 0x119E2},
3108 {0x11A3F, 0x11A46},
3109 {0x11A9A, 0x11A9C},
3110 {0x11A9E, 0x11AA2},
3111 {0x11B00, 0x11B09},
3112 {0x11BE1, 0x11BE1},
3113 {0x11C41, 0x11C45},
3114 {0x11C70, 0x11C71},
3115 {0x11EF7, 0x11EF8},
3116 {0x11F43, 0x11F4F},
3117 {0x11FFF, 0x11FFF},
3118 {0x12470, 0x12474},
3119 {0x12FF1, 0x12FF2},
3120 {0x16A6E, 0x16A6F},
3121 {0x16AF5, 0x16AF5},
3122 {0x16B37, 0x16B3B},
3123 {0x16B44, 0x16B44},
3124 {0x16D6D, 0x16D6F},
3125 {0x16E97, 0x16E9A},
3126 {0x16FE2, 0x16FE2},
3127 {0x1BC9F, 0x1BC9F},
3128 {0x1DA87, 0x1DA8B},
3129 {0x1E5FF, 0x1E5FF},
3130 {0x1E95E, 0x1E95F},
3131 };
3132
3134 inline constexpr code_range gc_Sm_ranges[] {
3135 {0x002B, 0x002B},
3136 {0x003C, 0x003E},
3137 {0x007C, 0x007C},
3138 {0x007E, 0x007E},
3139 {0x00AC, 0x00AC},
3140 {0x00B1, 0x00B1},
3141 {0x00D7, 0x00D7},
3142 {0x00F7, 0x00F7},
3143 {0x03F6, 0x03F6},
3144 {0x0606, 0x0608},
3145 {0x2044, 0x2044},
3146 {0x2052, 0x2052},
3147 {0x207A, 0x207C},
3148 {0x208A, 0x208C},
3149 {0x2118, 0x2118},
3150 {0x2140, 0x2144},
3151 {0x214B, 0x214B},
3152 {0x2190, 0x2194},
3153 {0x219A, 0x219B},
3154 {0x21A0, 0x21A0},
3155 {0x21A3, 0x21A3},
3156 {0x21A6, 0x21A6},
3157 {0x21AE, 0x21AE},
3158 {0x21CE, 0x21CF},
3159 {0x21D2, 0x21D2},
3160 {0x21D4, 0x21D4},
3161 {0x21F4, 0x22FF},
3162 {0x2320, 0x2321},
3163 {0x237C, 0x237C},
3164 {0x239B, 0x23B3},
3165 {0x23DC, 0x23E1},
3166 {0x25B7, 0x25B7},
3167 {0x25C1, 0x25C1},
3168 {0x25F8, 0x25FF},
3169 {0x266F, 0x266F},
3170 {0x27C0, 0x27C4},
3171 {0x27C7, 0x27E5},
3172 {0x27F0, 0x27FF},
3173 {0x2900, 0x2982},
3174 {0x2999, 0x29D7},
3175 {0x29DC, 0x29FB},
3176 {0x29FE, 0x2AFF},
3177 {0x2B30, 0x2B44},
3178 {0x2B47, 0x2B4C},
3179 {0xFB29, 0xFB29},
3180 {0xFE62, 0xFE62},
3181 {0xFE64, 0xFE66},
3182 {0xFF0B, 0xFF0B},
3183 {0xFF1C, 0xFF1E},
3184 {0xFF5C, 0xFF5C},
3185 {0xFF5E, 0xFF5E},
3186 {0xFFE2, 0xFFE2},
3187 {0xFFE9, 0xFFEC},
3188 {0x10D8E, 0x10D8F},
3189 {0x1D6C1, 0x1D6C1},
3190 {0x1D6DB, 0x1D6DB},
3191 {0x1D6FB, 0x1D6FB},
3192 {0x1D715, 0x1D715},
3193 {0x1D735, 0x1D735},
3194 {0x1D74F, 0x1D74F},
3195 {0x1D76F, 0x1D76F},
3196 {0x1D789, 0x1D789},
3197 {0x1D7A9, 0x1D7A9},
3198 {0x1D7C3, 0x1D7C3},
3199 {0x1EEF0, 0x1EEF1},
3200 };
3201
3203 inline constexpr code_range gc_Sc_ranges[] {
3204 {0x0024, 0x0024},
3205 {0x00A2, 0x00A5},
3206 {0x058F, 0x058F},
3207 {0x060B, 0x060B},
3208 {0x07FE, 0x07FF},
3209 {0x09F2, 0x09F3},
3210 {0x09FB, 0x09FB},
3211 {0x0AF1, 0x0AF1},
3212 {0x0BF9, 0x0BF9},
3213 {0x0E3F, 0x0E3F},
3214 {0x17DB, 0x17DB},
3215 {0x20A0, 0x20C0},
3216 {0xA838, 0xA838},
3217 {0xFDFC, 0xFDFC},
3218 {0xFE69, 0xFE69},
3219 {0xFF04, 0xFF04},
3220 {0xFFE0, 0xFFE1},
3221 {0xFFE5, 0xFFE6},
3222 {0x11FDD, 0x11FE0},
3223 {0x1E2FF, 0x1E2FF},
3224 {0x1ECB0, 0x1ECB0},
3225 };
3226
3228 inline constexpr code_range gc_Sk_ranges[] {
3229 {0x005E, 0x005E},
3230 {0x0060, 0x0060},
3231 {0x00A8, 0x00A8},
3232 {0x00AF, 0x00AF},
3233 {0x00B4, 0x00B4},
3234 {0x00B8, 0x00B8},
3235 {0x02C2, 0x02C5},
3236 {0x02D2, 0x02DF},
3237 {0x02E5, 0x02EB},
3238 {0x02ED, 0x02ED},
3239 {0x02EF, 0x02FF},
3240 {0x0375, 0x0375},
3241 {0x0384, 0x0385},
3242 {0x0888, 0x0888},
3243 {0x1FBD, 0x1FBD},
3244 {0x1FBF, 0x1FC1},
3245 {0x1FCD, 0x1FCF},
3246 {0x1FDD, 0x1FDF},
3247 {0x1FED, 0x1FEF},
3248 {0x1FFD, 0x1FFE},
3249 {0x309B, 0x309C},
3250 {0xA700, 0xA716},
3251 {0xA720, 0xA721},
3252 {0xA789, 0xA78A},
3253 {0xAB5B, 0xAB5B},
3254 {0xAB6A, 0xAB6B},
3255 {0xFBB2, 0xFBC2},
3256 {0xFF3E, 0xFF3E},
3257 {0xFF40, 0xFF40},
3258 {0xFFE3, 0xFFE3},
3259 {0x1F3FB, 0x1F3FF},
3260 };
3261
3263 inline constexpr code_range gc_So_ranges[] {
3264 {0x00A6, 0x00A6},
3265 {0x00A9, 0x00A9},
3266 {0x00AE, 0x00AE},
3267 {0x00B0, 0x00B0},
3268 {0x0482, 0x0482},
3269 {0x058D, 0x058E},
3270 {0x060E, 0x060F},
3271 {0x06DE, 0x06DE},
3272 {0x06E9, 0x06E9},
3273 {0x06FD, 0x06FE},
3274 {0x07F6, 0x07F6},
3275 {0x09FA, 0x09FA},
3276 {0x0B70, 0x0B70},
3277 {0x0BF3, 0x0BF8},
3278 {0x0BFA, 0x0BFA},
3279 {0x0C7F, 0x0C7F},
3280 {0x0D4F, 0x0D4F},
3281 {0x0D79, 0x0D79},
3282 {0x0F01, 0x0F03},
3283 {0x0F13, 0x0F13},
3284 {0x0F15, 0x0F17},
3285 {0x0F1A, 0x0F1F},
3286 {0x0F34, 0x0F34},
3287 {0x0F36, 0x0F36},
3288 {0x0F38, 0x0F38},
3289 {0x0FBE, 0x0FC5},
3290 {0x0FC7, 0x0FCC},
3291 {0x0FCE, 0x0FCF},
3292 {0x0FD5, 0x0FD8},
3293 {0x109E, 0x109F},
3294 {0x1390, 0x1399},
3295 {0x166D, 0x166D},
3296 {0x1940, 0x1940},
3297 {0x19DE, 0x19FF},
3298 {0x1B61, 0x1B6A},
3299 {0x1B74, 0x1B7C},
3300 {0x2100, 0x2101},
3301 {0x2103, 0x2106},
3302 {0x2108, 0x2109},
3303 {0x2114, 0x2114},
3304 {0x2116, 0x2117},
3305 {0x211E, 0x2123},
3306 {0x2125, 0x2125},
3307 {0x2127, 0x2127},
3308 {0x2129, 0x2129},
3309 {0x212E, 0x212E},
3310 {0x213A, 0x213B},
3311 {0x214A, 0x214A},
3312 {0x214C, 0x214D},
3313 {0x214F, 0x214F},
3314 {0x218A, 0x218B},
3315 {0x2195, 0x2199},
3316 {0x219C, 0x219F},
3317 {0x21A1, 0x21A2},
3318 {0x21A4, 0x21A5},
3319 {0x21A7, 0x21AD},
3320 {0x21AF, 0x21CD},
3321 {0x21D0, 0x21D1},
3322 {0x21D3, 0x21D3},
3323 {0x21D5, 0x21F3},
3324 {0x2300, 0x2307},
3325 {0x230C, 0x231F},
3326 {0x2322, 0x2328},
3327 {0x232B, 0x237B},
3328 {0x237D, 0x239A},
3329 {0x23B4, 0x23DB},
3330 {0x23E2, 0x2429},
3331 {0x2440, 0x244A},
3332 {0x249C, 0x24E9},
3333 {0x2500, 0x25B6},
3334 {0x25B8, 0x25C0},
3335 {0x25C2, 0x25F7},
3336 {0x2600, 0x266E},
3337 {0x2670, 0x2767},
3338 {0x2794, 0x27BF},
3339 {0x2800, 0x28FF},
3340 {0x2B00, 0x2B2F},
3341 {0x2B45, 0x2B46},
3342 {0x2B4D, 0x2B73},
3343 {0x2B76, 0x2B95},
3344 {0x2B97, 0x2BFF},
3345 {0x2CE5, 0x2CEA},
3346 {0x2E50, 0x2E51},
3347 {0x2E80, 0x2E99},
3348 {0x2E9B, 0x2EF3},
3349 {0x2F00, 0x2FD5},
3350 {0x2FF0, 0x2FFF},
3351 {0x3004, 0x3004},
3352 {0x3012, 0x3013},
3353 {0x3020, 0x3020},
3354 {0x3036, 0x3037},
3355 {0x303E, 0x303F},
3356 {0x3190, 0x3191},
3357 {0x3196, 0x319F},
3358 {0x31C0, 0x31E5},
3359 {0x31EF, 0x31EF},
3360 {0x3200, 0x321E},
3361 {0x322A, 0x3247},
3362 {0x3250, 0x3250},
3363 {0x3260, 0x327F},
3364 {0x328A, 0x32B0},
3365 {0x32C0, 0x33FF},
3366 {0x4DC0, 0x4DFF},
3367 {0xA490, 0xA4C6},
3368 {0xA828, 0xA82B},
3369 {0xA836, 0xA837},
3370 {0xA839, 0xA839},
3371 {0xAA77, 0xAA79},
3372 {0xFD40, 0xFD4F},
3373 {0xFDCF, 0xFDCF},
3374 {0xFDFD, 0xFDFF},
3375 {0xFFE4, 0xFFE4},
3376 {0xFFE8, 0xFFE8},
3377 {0xFFED, 0xFFEE},
3378 {0xFFFC, 0xFFFD},
3379 {0x10137, 0x1013F},
3380 {0x10179, 0x10189},
3381 {0x1018C, 0x1018E},
3382 {0x10190, 0x1019C},
3383 {0x101A0, 0x101A0},
3384 {0x101D0, 0x101FC},
3385 {0x10877, 0x10878},
3386 {0x10AC8, 0x10AC8},
3387 {0x1173F, 0x1173F},
3388 {0x11FD5, 0x11FDC},
3389 {0x11FE1, 0x11FF1},
3390 {0x16B3C, 0x16B3F},
3391 {0x16B45, 0x16B45},
3392 {0x1BC9C, 0x1BC9C},
3393 {0x1CC00, 0x1CCEF},
3394 {0x1CD00, 0x1CEB3},
3395 {0x1CF50, 0x1CFC3},
3396 {0x1D000, 0x1D0F5},
3397 {0x1D100, 0x1D126},
3398 {0x1D129, 0x1D164},
3399 {0x1D16A, 0x1D16C},
3400 {0x1D183, 0x1D184},
3401 {0x1D18C, 0x1D1A9},
3402 {0x1D1AE, 0x1D1EA},
3403 {0x1D200, 0x1D241},
3404 {0x1D245, 0x1D245},
3405 {0x1D300, 0x1D356},
3406 {0x1D800, 0x1D9FF},
3407 {0x1DA37, 0x1DA3A},
3408 {0x1DA6D, 0x1DA74},
3409 {0x1DA76, 0x1DA83},
3410 {0x1DA85, 0x1DA86},
3411 {0x1E14F, 0x1E14F},
3412 {0x1ECAC, 0x1ECAC},
3413 {0x1ED2E, 0x1ED2E},
3414 {0x1F000, 0x1F02B},
3415 {0x1F030, 0x1F093},
3416 {0x1F0A0, 0x1F0AE},
3417 {0x1F0B1, 0x1F0BF},
3418 {0x1F0C1, 0x1F0CF},
3419 {0x1F0D1, 0x1F0F5},
3420 {0x1F10D, 0x1F1AD},
3421 {0x1F1E6, 0x1F202},
3422 {0x1F210, 0x1F23B},
3423 {0x1F240, 0x1F248},
3424 {0x1F250, 0x1F251},
3425 {0x1F260, 0x1F265},
3426 {0x1F300, 0x1F3FA},
3427 {0x1F400, 0x1F6D7},
3428 {0x1F6DC, 0x1F6EC},
3429 {0x1F6F0, 0x1F6FC},
3430 {0x1F700, 0x1F776},
3431 {0x1F77B, 0x1F7D9},
3432 {0x1F7E0, 0x1F7EB},
3433 {0x1F7F0, 0x1F7F0},
3434 {0x1F800, 0x1F80B},
3435 {0x1F810, 0x1F847},
3436 {0x1F850, 0x1F859},
3437 {0x1F860, 0x1F887},
3438 {0x1F890, 0x1F8AD},
3439 {0x1F8B0, 0x1F8BB},
3440 {0x1F8C0, 0x1F8C1},
3441 {0x1F900, 0x1FA53},
3442 {0x1FA60, 0x1FA6D},
3443 {0x1FA70, 0x1FA7C},
3444 {0x1FA80, 0x1FA89},
3445 {0x1FA8F, 0x1FAC6},
3446 {0x1FACE, 0x1FADC},
3447 {0x1FADF, 0x1FAE9},
3448 {0x1FAF0, 0x1FAF8},
3449 {0x1FB00, 0x1FB92},
3450 {0x1FB94, 0x1FBEF},
3451 };
3452
3454 inline constexpr code_range gc_Zs_ranges[] {
3455 {0x0020, 0x0020},
3456 {0x00A0, 0x00A0},
3457 {0x1680, 0x1680},
3458 {0x2000, 0x200A},
3459 {0x202F, 0x202F},
3460 {0x205F, 0x205F},
3461 {0x3000, 0x3000},
3462 };
3463
3465 inline constexpr code_range gc_Zl_ranges[] {
3466 {0x2028, 0x2028},
3467 };
3468
3470 inline constexpr code_range gc_Zp_ranges[] {
3471 {0x2029, 0x2029},
3472 };
3473
3475 inline constexpr code_range gc_Cc_ranges[] {
3476 {0x0000, 0x001F},
3477 {0x007F, 0x009F},
3478 };
3479
3481 inline constexpr code_range gc_Cf_ranges[] {
3482 {0x00AD, 0x00AD},
3483 {0x0600, 0x0605},
3484 {0x061C, 0x061C},
3485 {0x06DD, 0x06DD},
3486 {0x070F, 0x070F},
3487 {0x0890, 0x0891},
3488 {0x08E2, 0x08E2},
3489 {0x180E, 0x180E},
3490 {0x200B, 0x200F},
3491 {0x202A, 0x202E},
3492 {0x2060, 0x2064},
3493 {0x2066, 0x206F},
3494 {0xFEFF, 0xFEFF},
3495 {0xFFF9, 0xFFFB},
3496 {0x110BD, 0x110BD},
3497 {0x110CD, 0x110CD},
3498 {0x13430, 0x1343F},
3499 {0x1BCA0, 0x1BCA3},
3500 {0x1D173, 0x1D17A},
3501 {0xE0001, 0xE0001},
3502 {0xE0020, 0xE007F},
3503 };
3504
3506 inline constexpr code_range gc_Co_ranges[] {
3507 {0xE000, 0xF8FF},
3508 {0xF0000, 0xFFFFD},
3509 {0x100000, 0x10FFFD},
3510 };
3511
3513 inline constexpr code_range gc_Cn_ranges[] {
3514 {0x0378, 0x0379},
3515 {0x0380, 0x0383},
3516 {0x038B, 0x038B},
3517 {0x038D, 0x038D},
3518 {0x03A2, 0x03A2},
3519 {0x0530, 0x0530},
3520 {0x0557, 0x0558},
3521 {0x058B, 0x058C},
3522 {0x0590, 0x0590},
3523 {0x05C8, 0x05CF},
3524 {0x05EB, 0x05EE},
3525 {0x05F5, 0x05FF},
3526 {0x070E, 0x070E},
3527 {0x074B, 0x074C},
3528 {0x07B2, 0x07BF},
3529 {0x07FB, 0x07FC},
3530 {0x082E, 0x082F},
3531 {0x083F, 0x083F},
3532 {0x085C, 0x085D},
3533 {0x085F, 0x085F},
3534 {0x086B, 0x086F},
3535 {0x088F, 0x088F},
3536 {0x0892, 0x0896},
3537 {0x0984, 0x0984},
3538 {0x098D, 0x098E},
3539 {0x0991, 0x0992},
3540 {0x09A9, 0x09A9},
3541 {0x09B1, 0x09B1},
3542 {0x09B3, 0x09B5},
3543 {0x09BA, 0x09BB},
3544 {0x09C5, 0x09C6},
3545 {0x09C9, 0x09CA},
3546 {0x09CF, 0x09D6},
3547 {0x09D8, 0x09DB},
3548 {0x09DE, 0x09DE},
3549 {0x09E4, 0x09E5},
3550 {0x09FF, 0x0A00},
3551 {0x0A04, 0x0A04},
3552 {0x0A0B, 0x0A0E},
3553 {0x0A11, 0x0A12},
3554 {0x0A29, 0x0A29},
3555 {0x0A31, 0x0A31},
3556 {0x0A34, 0x0A34},
3557 {0x0A37, 0x0A37},
3558 {0x0A3A, 0x0A3B},
3559 {0x0A3D, 0x0A3D},
3560 {0x0A43, 0x0A46},
3561 {0x0A49, 0x0A4A},
3562 {0x0A4E, 0x0A50},
3563 {0x0A52, 0x0A58},
3564 {0x0A5D, 0x0A5D},
3565 {0x0A5F, 0x0A65},
3566 {0x0A77, 0x0A80},
3567 {0x0A84, 0x0A84},
3568 {0x0A8E, 0x0A8E},
3569 {0x0A92, 0x0A92},
3570 {0x0AA9, 0x0AA9},
3571 {0x0AB1, 0x0AB1},
3572 {0x0AB4, 0x0AB4},
3573 {0x0ABA, 0x0ABB},
3574 {0x0AC6, 0x0AC6},
3575 {0x0ACA, 0x0ACA},
3576 {0x0ACE, 0x0ACF},
3577 {0x0AD1, 0x0ADF},
3578 {0x0AE4, 0x0AE5},
3579 {0x0AF2, 0x0AF8},
3580 {0x0B00, 0x0B00},
3581 {0x0B04, 0x0B04},
3582 {0x0B0D, 0x0B0E},
3583 {0x0B11, 0x0B12},
3584 {0x0B29, 0x0B29},
3585 {0x0B31, 0x0B31},
3586 {0x0B34, 0x0B34},
3587 {0x0B3A, 0x0B3B},
3588 {0x0B45, 0x0B46},
3589 {0x0B49, 0x0B4A},
3590 {0x0B4E, 0x0B54},
3591 {0x0B58, 0x0B5B},
3592 {0x0B5E, 0x0B5E},
3593 {0x0B64, 0x0B65},
3594 {0x0B78, 0x0B81},
3595 {0x0B84, 0x0B84},
3596 {0x0B8B, 0x0B8D},
3597 {0x0B91, 0x0B91},
3598 {0x0B96, 0x0B98},
3599 {0x0B9B, 0x0B9B},
3600 {0x0B9D, 0x0B9D},
3601 {0x0BA0, 0x0BA2},
3602 {0x0BA5, 0x0BA7},
3603 {0x0BAB, 0x0BAD},
3604 {0x0BBA, 0x0BBD},
3605 {0x0BC3, 0x0BC5},
3606 {0x0BC9, 0x0BC9},
3607 {0x0BCE, 0x0BCF},
3608 {0x0BD1, 0x0BD6},
3609 {0x0BD8, 0x0BE5},
3610 {0x0BFB, 0x0BFF},
3611 {0x0C0D, 0x0C0D},
3612 {0x0C11, 0x0C11},
3613 {0x0C29, 0x0C29},
3614 {0x0C3A, 0x0C3B},
3615 {0x0C45, 0x0C45},
3616 {0x0C49, 0x0C49},
3617 {0x0C4E, 0x0C54},
3618 {0x0C57, 0x0C57},
3619 {0x0C5B, 0x0C5C},
3620 {0x0C5E, 0x0C5F},
3621 {0x0C64, 0x0C65},
3622 {0x0C70, 0x0C76},
3623 {0x0C8D, 0x0C8D},
3624 {0x0C91, 0x0C91},
3625 {0x0CA9, 0x0CA9},
3626 {0x0CB4, 0x0CB4},
3627 {0x0CBA, 0x0CBB},
3628 {0x0CC5, 0x0CC5},
3629 {0x0CC9, 0x0CC9},
3630 {0x0CCE, 0x0CD4},
3631 {0x0CD7, 0x0CDC},
3632 {0x0CDF, 0x0CDF},
3633 {0x0CE4, 0x0CE5},
3634 {0x0CF0, 0x0CF0},
3635 {0x0CF4, 0x0CFF},
3636 {0x0D0D, 0x0D0D},
3637 {0x0D11, 0x0D11},
3638 {0x0D45, 0x0D45},
3639 {0x0D49, 0x0D49},
3640 {0x0D50, 0x0D53},
3641 {0x0D64, 0x0D65},
3642 {0x0D80, 0x0D80},
3643 {0x0D84, 0x0D84},
3644 {0x0D97, 0x0D99},
3645 {0x0DB2, 0x0DB2},
3646 {0x0DBC, 0x0DBC},
3647 {0x0DBE, 0x0DBF},
3648 {0x0DC7, 0x0DC9},
3649 {0x0DCB, 0x0DCE},
3650 {0x0DD5, 0x0DD5},
3651 {0x0DD7, 0x0DD7},
3652 {0x0DE0, 0x0DE5},
3653 {0x0DF0, 0x0DF1},
3654 {0x0DF5, 0x0E00},
3655 {0x0E3B, 0x0E3E},
3656 {0x0E5C, 0x0E80},
3657 {0x0E83, 0x0E83},
3658 {0x0E85, 0x0E85},
3659 {0x0E8B, 0x0E8B},
3660 {0x0EA4, 0x0EA4},
3661 {0x0EA6, 0x0EA6},
3662 {0x0EBE, 0x0EBF},
3663 {0x0EC5, 0x0EC5},
3664 {0x0EC7, 0x0EC7},
3665 {0x0ECF, 0x0ECF},
3666 {0x0EDA, 0x0EDB},
3667 {0x0EE0, 0x0EFF},
3668 {0x0F48, 0x0F48},
3669 {0x0F6D, 0x0F70},
3670 {0x0F98, 0x0F98},
3671 {0x0FBD, 0x0FBD},
3672 {0x0FCD, 0x0FCD},
3673 {0x0FDB, 0x0FFF},
3674 {0x10C6, 0x10C6},
3675 {0x10C8, 0x10CC},
3676 {0x10CE, 0x10CF},
3677 {0x1249, 0x1249},
3678 {0x124E, 0x124F},
3679 {0x1257, 0x1257},
3680 {0x1259, 0x1259},
3681 {0x125E, 0x125F},
3682 {0x1289, 0x1289},
3683 {0x128E, 0x128F},
3684 {0x12B1, 0x12B1},
3685 {0x12B6, 0x12B7},
3686 {0x12BF, 0x12BF},
3687 {0x12C1, 0x12C1},
3688 {0x12C6, 0x12C7},
3689 {0x12D7, 0x12D7},
3690 {0x1311, 0x1311},
3691 {0x1316, 0x1317},
3692 {0x135B, 0x135C},
3693 {0x137D, 0x137F},
3694 {0x139A, 0x139F},
3695 {0x13F6, 0x13F7},
3696 {0x13FE, 0x13FF},
3697 {0x169D, 0x169F},
3698 {0x16F9, 0x16FF},
3699 {0x1716, 0x171E},
3700 {0x1737, 0x173F},
3701 {0x1754, 0x175F},
3702 {0x176D, 0x176D},
3703 {0x1771, 0x1771},
3704 {0x1774, 0x177F},
3705 {0x17DE, 0x17DF},
3706 {0x17EA, 0x17EF},
3707 {0x17FA, 0x17FF},
3708 {0x181A, 0x181F},
3709 {0x1879, 0x187F},
3710 {0x18AB, 0x18AF},
3711 {0x18F6, 0x18FF},
3712 {0x191F, 0x191F},
3713 {0x192C, 0x192F},
3714 {0x193C, 0x193F},
3715 {0x1941, 0x1943},
3716 {0x196E, 0x196F},
3717 {0x1975, 0x197F},
3718 {0x19AC, 0x19AF},
3719 {0x19CA, 0x19CF},
3720 {0x19DB, 0x19DD},
3721 {0x1A1C, 0x1A1D},
3722 {0x1A5F, 0x1A5F},
3723 {0x1A7D, 0x1A7E},
3724 {0x1A8A, 0x1A8F},
3725 {0x1A9A, 0x1A9F},
3726 {0x1AAE, 0x1AAF},
3727 {0x1ACF, 0x1AFF},
3728 {0x1B4D, 0x1B4D},
3729 {0x1BF4, 0x1BFB},
3730 {0x1C38, 0x1C3A},
3731 {0x1C4A, 0x1C4C},
3732 {0x1C8B, 0x1C8F},
3733 {0x1CBB, 0x1CBC},
3734 {0x1CC8, 0x1CCF},
3735 {0x1CFB, 0x1CFF},
3736 {0x1F16, 0x1F17},
3737 {0x1F1E, 0x1F1F},
3738 {0x1F46, 0x1F47},
3739 {0x1F4E, 0x1F4F},
3740 {0x1F58, 0x1F58},
3741 {0x1F5A, 0x1F5A},
3742 {0x1F5C, 0x1F5C},
3743 {0x1F5E, 0x1F5E},
3744 {0x1F7E, 0x1F7F},
3745 {0x1FB5, 0x1FB5},
3746 {0x1FC5, 0x1FC5},
3747 {0x1FD4, 0x1FD5},
3748 {0x1FDC, 0x1FDC},
3749 {0x1FF0, 0x1FF1},
3750 {0x1FF5, 0x1FF5},
3751 {0x1FFF, 0x1FFF},
3752 {0x2065, 0x2065},
3753 {0x2072, 0x2073},
3754 {0x208F, 0x208F},
3755 {0x209D, 0x209F},
3756 {0x20C1, 0x20CF},
3757 {0x20F1, 0x20FF},
3758 {0x218C, 0x218F},
3759 {0x242A, 0x243F},
3760 {0x244B, 0x245F},
3761 {0x2B74, 0x2B75},
3762 {0x2B96, 0x2B96},
3763 {0x2CF4, 0x2CF8},
3764 {0x2D26, 0x2D26},
3765 {0x2D28, 0x2D2C},
3766 {0x2D2E, 0x2D2F},
3767 {0x2D68, 0x2D6E},
3768 {0x2D71, 0x2D7E},
3769 {0x2D97, 0x2D9F},
3770 {0x2DA7, 0x2DA7},
3771 {0x2DAF, 0x2DAF},
3772 {0x2DB7, 0x2DB7},
3773 {0x2DBF, 0x2DBF},
3774 {0x2DC7, 0x2DC7},
3775 {0x2DCF, 0x2DCF},
3776 {0x2DD7, 0x2DD7},
3777 {0x2DDF, 0x2DDF},
3778 {0x2E5E, 0x2E7F},
3779 {0x2E9A, 0x2E9A},
3780 {0x2EF4, 0x2EFF},
3781 {0x2FD6, 0x2FEF},
3782 {0x3040, 0x3040},
3783 {0x3097, 0x3098},
3784 {0x3100, 0x3104},
3785 {0x3130, 0x3130},
3786 {0x318F, 0x318F},
3787 {0x31E6, 0x31EE},
3788 {0x321F, 0x321F},
3789 {0xA48D, 0xA48F},
3790 {0xA4C7, 0xA4CF},
3791 {0xA62C, 0xA63F},
3792 {0xA6F8, 0xA6FF},
3793 {0xA7CE, 0xA7CF},
3794 {0xA7D2, 0xA7D2},
3795 {0xA7D4, 0xA7D4},
3796 {0xA7DD, 0xA7F1},
3797 {0xA82D, 0xA82F},
3798 {0xA83A, 0xA83F},
3799 {0xA878, 0xA87F},
3800 {0xA8C6, 0xA8CD},
3801 {0xA8DA, 0xA8DF},
3802 {0xA954, 0xA95E},
3803 {0xA97D, 0xA97F},
3804 {0xA9CE, 0xA9CE},
3805 {0xA9DA, 0xA9DD},
3806 {0xA9FF, 0xA9FF},
3807 {0xAA37, 0xAA3F},
3808 {0xAA4E, 0xAA4F},
3809 {0xAA5A, 0xAA5B},
3810 {0xAAC3, 0xAADA},
3811 {0xAAF7, 0xAB00},
3812 {0xAB07, 0xAB08},
3813 {0xAB0F, 0xAB10},
3814 {0xAB17, 0xAB1F},
3815 {0xAB27, 0xAB27},
3816 {0xAB2F, 0xAB2F},
3817 {0xAB6C, 0xAB6F},
3818 {0xABEE, 0xABEF},
3819 {0xABFA, 0xABFF},
3820 {0xD7A4, 0xD7AF},
3821 {0xD7C7, 0xD7CA},
3822 {0xD7FC, 0xD7FF},
3823 {0xFA6E, 0xFA6F},
3824 {0xFADA, 0xFAFF},
3825 {0xFB07, 0xFB12},
3826 {0xFB18, 0xFB1C},
3827 {0xFB37, 0xFB37},
3828 {0xFB3D, 0xFB3D},
3829 {0xFB3F, 0xFB3F},
3830 {0xFB42, 0xFB42},
3831 {0xFB45, 0xFB45},
3832 {0xFBC3, 0xFBD2},
3833 {0xFD90, 0xFD91},
3834 {0xFDC8, 0xFDCE},
3835 {0xFDD0, 0xFDEF},
3836 {0xFE1A, 0xFE1F},
3837 {0xFE53, 0xFE53},
3838 {0xFE67, 0xFE67},
3839 {0xFE6C, 0xFE6F},
3840 {0xFE75, 0xFE75},
3841 {0xFEFD, 0xFEFE},
3842 {0xFF00, 0xFF00},
3843 {0xFFBF, 0xFFC1},
3844 {0xFFC8, 0xFFC9},
3845 {0xFFD0, 0xFFD1},
3846 {0xFFD8, 0xFFD9},
3847 {0xFFDD, 0xFFDF},
3848 {0xFFE7, 0xFFE7},
3849 {0xFFEF, 0xFFF8},
3850 {0xFFFE, 0xFFFF},
3851 {0x1000C, 0x1000C},
3852 {0x10027, 0x10027},
3853 {0x1003B, 0x1003B},
3854 {0x1003E, 0x1003E},
3855 {0x1004E, 0x1004F},
3856 {0x1005E, 0x1007F},
3857 {0x100FB, 0x100FF},
3858 {0x10103, 0x10106},
3859 {0x10134, 0x10136},
3860 {0x1018F, 0x1018F},
3861 {0x1019D, 0x1019F},
3862 {0x101A1, 0x101CF},
3863 {0x101FE, 0x1027F},
3864 {0x1029D, 0x1029F},
3865 {0x102D1, 0x102DF},
3866 {0x102FC, 0x102FF},
3867 {0x10324, 0x1032C},
3868 {0x1034B, 0x1034F},
3869 {0x1037B, 0x1037F},
3870 {0x1039E, 0x1039E},
3871 {0x103C4, 0x103C7},
3872 {0x103D6, 0x103FF},
3873 {0x1049E, 0x1049F},
3874 {0x104AA, 0x104AF},
3875 {0x104D4, 0x104D7},
3876 {0x104FC, 0x104FF},
3877 {0x10528, 0x1052F},
3878 {0x10564, 0x1056E},
3879 {0x1057B, 0x1057B},
3880 {0x1058B, 0x1058B},
3881 {0x10593, 0x10593},
3882 {0x10596, 0x10596},
3883 {0x105A2, 0x105A2},
3884 {0x105B2, 0x105B2},
3885 {0x105BA, 0x105BA},
3886 {0x105BD, 0x105BF},
3887 {0x105F4, 0x105FF},
3888 {0x10737, 0x1073F},
3889 {0x10756, 0x1075F},
3890 {0x10768, 0x1077F},
3891 {0x10786, 0x10786},
3892 {0x107B1, 0x107B1},
3893 {0x107BB, 0x107FF},
3894 {0x10806, 0x10807},
3895 {0x10809, 0x10809},
3896 {0x10836, 0x10836},
3897 {0x10839, 0x1083B},
3898 {0x1083D, 0x1083E},
3899 {0x10856, 0x10856},
3900 {0x1089F, 0x108A6},
3901 {0x108B0, 0x108DF},
3902 {0x108F3, 0x108F3},
3903 {0x108F6, 0x108FA},
3904 {0x1091C, 0x1091E},
3905 {0x1093A, 0x1093E},
3906 {0x10940, 0x1097F},
3907 {0x109B8, 0x109BB},
3908 {0x109D0, 0x109D1},
3909 {0x10A04, 0x10A04},
3910 {0x10A07, 0x10A0B},
3911 {0x10A14, 0x10A14},
3912 {0x10A18, 0x10A18},
3913 {0x10A36, 0x10A37},
3914 {0x10A3B, 0x10A3E},
3915 {0x10A49, 0x10A4F},
3916 {0x10A59, 0x10A5F},
3917 {0x10AA0, 0x10ABF},
3918 {0x10AE7, 0x10AEA},
3919 {0x10AF7, 0x10AFF},
3920 {0x10B36, 0x10B38},
3921 {0x10B56, 0x10B57},
3922 {0x10B73, 0x10B77},
3923 {0x10B92, 0x10B98},
3924 {0x10B9D, 0x10BA8},
3925 {0x10BB0, 0x10BFF},
3926 {0x10C49, 0x10C7F},
3927 {0x10CB3, 0x10CBF},
3928 {0x10CF3, 0x10CF9},
3929 {0x10D28, 0x10D2F},
3930 {0x10D3A, 0x10D3F},
3931 {0x10D66, 0x10D68},
3932 {0x10D86, 0x10D8D},
3933 {0x10D90, 0x10E5F},
3934 {0x10E7F, 0x10E7F},
3935 {0x10EAA, 0x10EAA},
3936 {0x10EAE, 0x10EAF},
3937 {0x10EB2, 0x10EC1},
3938 {0x10EC5, 0x10EFB},
3939 {0x10F28, 0x10F2F},
3940 {0x10F5A, 0x10F6F},
3941 {0x10F8A, 0x10FAF},
3942 {0x10FCC, 0x10FDF},
3943 {0x10FF7, 0x10FFF},
3944 {0x1104E, 0x11051},
3945 {0x11076, 0x1107E},
3946 {0x110C3, 0x110CC},
3947 {0x110CE, 0x110CF},
3948 {0x110E9, 0x110EF},
3949 {0x110FA, 0x110FF},
3950 {0x11135, 0x11135},
3951 {0x11148, 0x1114F},
3952 {0x11177, 0x1117F},
3953 {0x111E0, 0x111E0},
3954 {0x111F5, 0x111FF},
3955 {0x11212, 0x11212},
3956 {0x11242, 0x1127F},
3957 {0x11287, 0x11287},
3958 {0x11289, 0x11289},
3959 {0x1128E, 0x1128E},
3960 {0x1129E, 0x1129E},
3961 {0x112AA, 0x112AF},
3962 {0x112EB, 0x112EF},
3963 {0x112FA, 0x112FF},
3964 {0x11304, 0x11304},
3965 {0x1130D, 0x1130E},
3966 {0x11311, 0x11312},
3967 {0x11329, 0x11329},
3968 {0x11331, 0x11331},
3969 {0x11334, 0x11334},
3970 {0x1133A, 0x1133A},
3971 {0x11345, 0x11346},
3972 {0x11349, 0x1134A},
3973 {0x1134E, 0x1134F},
3974 {0x11351, 0x11356},
3975 {0x11358, 0x1135C},
3976 {0x11364, 0x11365},
3977 {0x1136D, 0x1136F},
3978 {0x11375, 0x1137F},
3979 {0x1138A, 0x1138A},
3980 {0x1138C, 0x1138D},
3981 {0x1138F, 0x1138F},
3982 {0x113B6, 0x113B6},
3983 {0x113C1, 0x113C1},
3984 {0x113C3, 0x113C4},
3985 {0x113C6, 0x113C6},
3986 {0x113CB, 0x113CB},
3987 {0x113D6, 0x113D6},
3988 {0x113D9, 0x113E0},
3989 {0x113E3, 0x113FF},
3990 {0x1145C, 0x1145C},
3991 {0x11462, 0x1147F},
3992 {0x114C8, 0x114CF},
3993 {0x114DA, 0x1157F},
3994 {0x115B6, 0x115B7},
3995 {0x115DE, 0x115FF},
3996 {0x11645, 0x1164F},
3997 {0x1165A, 0x1165F},
3998 {0x1166D, 0x1167F},
3999 {0x116BA, 0x116BF},
4000 {0x116CA, 0x116CF},
4001 {0x116E4, 0x116FF},
4002 {0x1171B, 0x1171C},
4003 {0x1172C, 0x1172F},
4004 {0x11747, 0x117FF},
4005 {0x1183C, 0x1189F},
4006 {0x118F3, 0x118FE},
4007 {0x11907, 0x11908},
4008 {0x1190A, 0x1190B},
4009 {0x11914, 0x11914},
4010 {0x11917, 0x11917},
4011 {0x11936, 0x11936},
4012 {0x11939, 0x1193A},
4013 {0x11947, 0x1194F},
4014 {0x1195A, 0x1199F},
4015 {0x119A8, 0x119A9},
4016 {0x119D8, 0x119D9},
4017 {0x119E5, 0x119FF},
4018 {0x11A48, 0x11A4F},
4019 {0x11AA3, 0x11AAF},
4020 {0x11AF9, 0x11AFF},
4021 {0x11B0A, 0x11BBF},
4022 {0x11BE2, 0x11BEF},
4023 {0x11BFA, 0x11BFF},
4024 {0x11C09, 0x11C09},
4025 {0x11C37, 0x11C37},
4026 {0x11C46, 0x11C4F},
4027 {0x11C6D, 0x11C6F},
4028 {0x11C90, 0x11C91},
4029 {0x11CA8, 0x11CA8},
4030 {0x11CB7, 0x11CFF},
4031 {0x11D07, 0x11D07},
4032 {0x11D0A, 0x11D0A},
4033 {0x11D37, 0x11D39},
4034 {0x11D3B, 0x11D3B},
4035 {0x11D3E, 0x11D3E},
4036 {0x11D48, 0x11D4F},
4037 {0x11D5A, 0x11D5F},
4038 {0x11D66, 0x11D66},
4039 {0x11D69, 0x11D69},
4040 {0x11D8F, 0x11D8F},
4041 {0x11D92, 0x11D92},
4042 {0x11D99, 0x11D9F},
4043 {0x11DAA, 0x11EDF},
4044 {0x11EF9, 0x11EFF},
4045 {0x11F11, 0x11F11},
4046 {0x11F3B, 0x11F3D},
4047 {0x11F5B, 0x11FAF},
4048 {0x11FB1, 0x11FBF},
4049 {0x11FF2, 0x11FFE},
4050 {0x1239A, 0x123FF},
4051 {0x1246F, 0x1246F},
4052 {0x12475, 0x1247F},
4053 {0x12544, 0x12F8F},
4054 {0x12FF3, 0x12FFF},
4055 {0x13456, 0x1345F},
4056 {0x143FB, 0x143FF},
4057 {0x14647, 0x160FF},
4058 {0x1613A, 0x167FF},
4059 {0x16A39, 0x16A3F},
4060 {0x16A5F, 0x16A5F},
4061 {0x16A6A, 0x16A6D},
4062 {0x16ABF, 0x16ABF},
4063 {0x16ACA, 0x16ACF},
4064 {0x16AEE, 0x16AEF},
4065 {0x16AF6, 0x16AFF},
4066 {0x16B46, 0x16B4F},
4067 {0x16B5A, 0x16B5A},
4068 {0x16B62, 0x16B62},
4069 {0x16B78, 0x16B7C},
4070 {0x16B90, 0x16D3F},
4071 {0x16D7A, 0x16E3F},
4072 {0x16E9B, 0x16EFF},
4073 {0x16F4B, 0x16F4E},
4074 {0x16F88, 0x16F8E},
4075 {0x16FA0, 0x16FDF},
4076 {0x16FE5, 0x16FEF},
4077 {0x16FF2, 0x16FFF},
4078 {0x187F8, 0x187FF},
4079 {0x18CD6, 0x18CFE},
4080 {0x18D09, 0x1AFEF},
4081 {0x1AFF4, 0x1AFF4},
4082 {0x1AFFC, 0x1AFFC},
4083 {0x1AFFF, 0x1AFFF},
4084 {0x1B123, 0x1B131},
4085 {0x1B133, 0x1B14F},
4086 {0x1B153, 0x1B154},
4087 {0x1B156, 0x1B163},
4088 {0x1B168, 0x1B16F},
4089 {0x1B2FC, 0x1BBFF},
4090 {0x1BC6B, 0x1BC6F},
4091 {0x1BC7D, 0x1BC7F},
4092 {0x1BC89, 0x1BC8F},
4093 {0x1BC9A, 0x1BC9B},
4094 {0x1BCA4, 0x1CBFF},
4095 {0x1CCFA, 0x1CCFF},
4096 {0x1CEB4, 0x1CEFF},
4097 {0x1CF2E, 0x1CF2F},
4098 {0x1CF47, 0x1CF4F},
4099 {0x1CFC4, 0x1CFFF},
4100 {0x1D0F6, 0x1D0FF},
4101 {0x1D127, 0x1D128},
4102 {0x1D1EB, 0x1D1FF},
4103 {0x1D246, 0x1D2BF},
4104 {0x1D2D4, 0x1D2DF},
4105 {0x1D2F4, 0x1D2FF},
4106 {0x1D357, 0x1D35F},
4107 {0x1D379, 0x1D3FF},
4108 {0x1D455, 0x1D455},
4109 {0x1D49D, 0x1D49D},
4110 {0x1D4A0, 0x1D4A1},
4111 {0x1D4A3, 0x1D4A4},
4112 {0x1D4A7, 0x1D4A8},
4113 {0x1D4AD, 0x1D4AD},
4114 {0x1D4BA, 0x1D4BA},
4115 {0x1D4BC, 0x1D4BC},
4116 {0x1D4C4, 0x1D4C4},
4117 {0x1D506, 0x1D506},
4118 {0x1D50B, 0x1D50C},
4119 {0x1D515, 0x1D515},
4120 {0x1D51D, 0x1D51D},
4121 {0x1D53A, 0x1D53A},
4122 {0x1D53F, 0x1D53F},
4123 {0x1D545, 0x1D545},
4124 {0x1D547, 0x1D549},
4125 {0x1D551, 0x1D551},
4126 {0x1D6A6, 0x1D6A7},
4127 {0x1D7CC, 0x1D7CD},
4128 {0x1DA8C, 0x1DA9A},
4129 {0x1DAA0, 0x1DAA0},
4130 {0x1DAB0, 0x1DEFF},
4131 {0x1DF1F, 0x1DF24},
4132 {0x1DF2B, 0x1DFFF},
4133 {0x1E007, 0x1E007},
4134 {0x1E019, 0x1E01A},
4135 {0x1E022, 0x1E022},
4136 {0x1E025, 0x1E025},
4137 {0x1E02B, 0x1E02F},
4138 {0x1E06E, 0x1E08E},
4139 {0x1E090, 0x1E0FF},
4140 {0x1E12D, 0x1E12F},
4141 {0x1E13E, 0x1E13F},
4142 {0x1E14A, 0x1E14D},
4143 {0x1E150, 0x1E28F},
4144 {0x1E2AF, 0x1E2BF},
4145 {0x1E2FA, 0x1E2FE},
4146 {0x1E300, 0x1E4CF},
4147 {0x1E4FA, 0x1E5CF},
4148 {0x1E5FB, 0x1E5FE},
4149 {0x1E600, 0x1E7DF},
4150 {0x1E7E7, 0x1E7E7},
4151 {0x1E7EC, 0x1E7EC},
4152 {0x1E7EF, 0x1E7EF},
4153 {0x1E7FF, 0x1E7FF},
4154 {0x1E8C5, 0x1E8C6},
4155 {0x1E8D7, 0x1E8FF},
4156 {0x1E94C, 0x1E94F},
4157 {0x1E95A, 0x1E95D},
4158 {0x1E960, 0x1EC70},
4159 {0x1ECB5, 0x1ED00},
4160 {0x1ED3E, 0x1EDFF},
4161 {0x1EE04, 0x1EE04},
4162 {0x1EE20, 0x1EE20},
4163 {0x1EE23, 0x1EE23},
4164 {0x1EE25, 0x1EE26},
4165 {0x1EE28, 0x1EE28},
4166 {0x1EE33, 0x1EE33},
4167 {0x1EE38, 0x1EE38},
4168 {0x1EE3A, 0x1EE3A},
4169 {0x1EE3C, 0x1EE41},
4170 {0x1EE43, 0x1EE46},
4171 {0x1EE48, 0x1EE48},
4172 {0x1EE4A, 0x1EE4A},
4173 {0x1EE4C, 0x1EE4C},
4174 {0x1EE50, 0x1EE50},
4175 {0x1EE53, 0x1EE53},
4176 {0x1EE55, 0x1EE56},
4177 {0x1EE58, 0x1EE58},
4178 {0x1EE5A, 0x1EE5A},
4179 {0x1EE5C, 0x1EE5C},
4180 {0x1EE5E, 0x1EE5E},
4181 {0x1EE60, 0x1EE60},
4182 {0x1EE63, 0x1EE63},
4183 {0x1EE65, 0x1EE66},
4184 {0x1EE6B, 0x1EE6B},
4185 {0x1EE73, 0x1EE73},
4186 {0x1EE78, 0x1EE78},
4187 {0x1EE7D, 0x1EE7D},
4188 {0x1EE7F, 0x1EE7F},
4189 {0x1EE8A, 0x1EE8A},
4190 {0x1EE9C, 0x1EEA0},
4191 {0x1EEA4, 0x1EEA4},
4192 {0x1EEAA, 0x1EEAA},
4193 {0x1EEBC, 0x1EEEF},
4194 {0x1EEF2, 0x1EFFF},
4195 {0x1F02C, 0x1F02F},
4196 {0x1F094, 0x1F09F},
4197 {0x1F0AF, 0x1F0B0},
4198 {0x1F0C0, 0x1F0C0},
4199 {0x1F0D0, 0x1F0D0},
4200 {0x1F0F6, 0x1F0FF},
4201 {0x1F1AE, 0x1F1E5},
4202 {0x1F203, 0x1F20F},
4203 {0x1F23C, 0x1F23F},
4204 {0x1F249, 0x1F24F},
4205 {0x1F252, 0x1F25F},
4206 {0x1F266, 0x1F2FF},
4207 {0x1F6D8, 0x1F6DB},
4208 {0x1F6ED, 0x1F6EF},
4209 {0x1F6FD, 0x1F6FF},
4210 {0x1F777, 0x1F77A},
4211 {0x1F7DA, 0x1F7DF},
4212 {0x1F7EC, 0x1F7EF},
4213 {0x1F7F1, 0x1F7FF},
4214 {0x1F80C, 0x1F80F},
4215 {0x1F848, 0x1F84F},
4216 {0x1F85A, 0x1F85F},
4217 {0x1F888, 0x1F88F},
4218 {0x1F8AE, 0x1F8AF},
4219 {0x1F8BC, 0x1F8BF},
4220 {0x1F8C2, 0x1F8FF},
4221 {0x1FA54, 0x1FA5F},
4222 {0x1FA6E, 0x1FA6F},
4223 {0x1FA7D, 0x1FA7F},
4224 {0x1FA8A, 0x1FA8E},
4225 {0x1FAC7, 0x1FACD},
4226 {0x1FADD, 0x1FADE},
4227 {0x1FAEA, 0x1FAEF},
4228 {0x1FAF9, 0x1FAFF},
4229 {0x1FB93, 0x1FB93},
4230 {0x1FBFA, 0x1FFFF},
4231 {0x2A6E0, 0x2A6FF},
4232 {0x2B73A, 0x2B73F},
4233 {0x2B81E, 0x2B81F},
4234 {0x2CEA2, 0x2CEAF},
4235 {0x2EBE1, 0x2EBEF},
4236 {0x2EE5E, 0x2F7FF},
4237 {0x2FA1E, 0x2FFFF},
4238 {0x3134B, 0x3134F},
4239 {0x323B0, 0xE0000},
4240 {0xE0002, 0xE001F},
4241 {0xE0080, 0xE00FF},
4242 {0xE01F0, 0xEFFFF},
4243 {0xFFFFE, 0xFFFFF},
4244 {0x10FFFE, 0x10FFFF},
4245 };
4246
4248 inline constexpr code_range gc_L_ranges[] {
4249 {0x0041, 0x005A},
4250 {0x0061, 0x007A},
4251 {0x00AA, 0x00AA},
4252 {0x00B5, 0x00B5},
4253 {0x00BA, 0x00BA},
4254 {0x00C0, 0x00D6},
4255 {0x00D8, 0x00F6},
4256 {0x00F8, 0x02C1},
4257 {0x02C6, 0x02D1},
4258 {0x02E0, 0x02E4},
4259 {0x02EC, 0x02EC},
4260 {0x02EE, 0x02EE},
4261 {0x0370, 0x0374},
4262 {0x0376, 0x0377},
4263 {0x037A, 0x037D},
4264 {0x037F, 0x037F},
4265 {0x0386, 0x0386},
4266 {0x0388, 0x038A},
4267 {0x038C, 0x038C},
4268 {0x038E, 0x03A1},
4269 {0x03A3, 0x03F5},
4270 {0x03F7, 0x0481},
4271 {0x048A, 0x052F},
4272 {0x0531, 0x0556},
4273 {0x0559, 0x0559},
4274 {0x0560, 0x0588},
4275 {0x05D0, 0x05EA},
4276 {0x05EF, 0x05F2},
4277 {0x0620, 0x064A},
4278 {0x066E, 0x066F},
4279 {0x0671, 0x06D3},
4280 {0x06D5, 0x06D5},
4281 {0x06E5, 0x06E6},
4282 {0x06EE, 0x06EF},
4283 {0x06FA, 0x06FC},
4284 {0x06FF, 0x06FF},
4285 {0x0710, 0x0710},
4286 {0x0712, 0x072F},
4287 {0x074D, 0x07A5},
4288 {0x07B1, 0x07B1},
4289 {0x07CA, 0x07EA},
4290 {0x07F4, 0x07F5},
4291 {0x07FA, 0x07FA},
4292 {0x0800, 0x0815},
4293 {0x081A, 0x081A},
4294 {0x0824, 0x0824},
4295 {0x0828, 0x0828},
4296 {0x0840, 0x0858},
4297 {0x0860, 0x086A},
4298 {0x0870, 0x0887},
4299 {0x0889, 0x088E},
4300 {0x08A0, 0x08C9},
4301 {0x0904, 0x0939},
4302 {0x093D, 0x093D},
4303 {0x0950, 0x0950},
4304 {0x0958, 0x0961},
4305 {0x0971, 0x0980},
4306 {0x0985, 0x098C},
4307 {0x098F, 0x0990},
4308 {0x0993, 0x09A8},
4309 {0x09AA, 0x09B0},
4310 {0x09B2, 0x09B2},
4311 {0x09B6, 0x09B9},
4312 {0x09BD, 0x09BD},
4313 {0x09CE, 0x09CE},
4314 {0x09DC, 0x09DD},
4315 {0x09DF, 0x09E1},
4316 {0x09F0, 0x09F1},
4317 {0x09FC, 0x09FC},
4318 {0x0A05, 0x0A0A},
4319 {0x0A0F, 0x0A10},
4320 {0x0A13, 0x0A28},
4321 {0x0A2A, 0x0A30},
4322 {0x0A32, 0x0A33},
4323 {0x0A35, 0x0A36},
4324 {0x0A38, 0x0A39},
4325 {0x0A59, 0x0A5C},
4326 {0x0A5E, 0x0A5E},
4327 {0x0A72, 0x0A74},
4328 {0x0A85, 0x0A8D},
4329 {0x0A8F, 0x0A91},
4330 {0x0A93, 0x0AA8},
4331 {0x0AAA, 0x0AB0},
4332 {0x0AB2, 0x0AB3},
4333 {0x0AB5, 0x0AB9},
4334 {0x0ABD, 0x0ABD},
4335 {0x0AD0, 0x0AD0},
4336 {0x0AE0, 0x0AE1},
4337 {0x0AF9, 0x0AF9},
4338 {0x0B05, 0x0B0C},
4339 {0x0B0F, 0x0B10},
4340 {0x0B13, 0x0B28},
4341 {0x0B2A, 0x0B30},
4342 {0x0B32, 0x0B33},
4343 {0x0B35, 0x0B39},
4344 {0x0B3D, 0x0B3D},
4345 {0x0B5C, 0x0B5D},
4346 {0x0B5F, 0x0B61},
4347 {0x0B71, 0x0B71},
4348 {0x0B83, 0x0B83},
4349 {0x0B85, 0x0B8A},
4350 {0x0B8E, 0x0B90},
4351 {0x0B92, 0x0B95},
4352 {0x0B99, 0x0B9A},
4353 {0x0B9C, 0x0B9C},
4354 {0x0B9E, 0x0B9F},
4355 {0x0BA3, 0x0BA4},
4356 {0x0BA8, 0x0BAA},
4357 {0x0BAE, 0x0BB9},
4358 {0x0BD0, 0x0BD0},
4359 {0x0C05, 0x0C0C},
4360 {0x0C0E, 0x0C10},
4361 {0x0C12, 0x0C28},
4362 {0x0C2A, 0x0C39},
4363 {0x0C3D, 0x0C3D},
4364 {0x0C58, 0x0C5A},
4365 {0x0C5D, 0x0C5D},
4366 {0x0C60, 0x0C61},
4367 {0x0C80, 0x0C80},
4368 {0x0C85, 0x0C8C},
4369 {0x0C8E, 0x0C90},
4370 {0x0C92, 0x0CA8},
4371 {0x0CAA, 0x0CB3},
4372 {0x0CB5, 0x0CB9},
4373 {0x0CBD, 0x0CBD},
4374 {0x0CDD, 0x0CDE},
4375 {0x0CE0, 0x0CE1},
4376 {0x0CF1, 0x0CF2},
4377 {0x0D04, 0x0D0C},
4378 {0x0D0E, 0x0D10},
4379 {0x0D12, 0x0D3A},
4380 {0x0D3D, 0x0D3D},
4381 {0x0D4E, 0x0D4E},
4382 {0x0D54, 0x0D56},
4383 {0x0D5F, 0x0D61},
4384 {0x0D7A, 0x0D7F},
4385 {0x0D85, 0x0D96},
4386 {0x0D9A, 0x0DB1},
4387 {0x0DB3, 0x0DBB},
4388 {0x0DBD, 0x0DBD},
4389 {0x0DC0, 0x0DC6},
4390 {0x0E01, 0x0E30},
4391 {0x0E32, 0x0E33},
4392 {0x0E40, 0x0E46},
4393 {0x0E81, 0x0E82},
4394 {0x0E84, 0x0E84},
4395 {0x0E86, 0x0E8A},
4396 {0x0E8C, 0x0EA3},
4397 {0x0EA5, 0x0EA5},
4398 {0x0EA7, 0x0EB0},
4399 {0x0EB2, 0x0EB3},
4400 {0x0EBD, 0x0EBD},
4401 {0x0EC0, 0x0EC4},
4402 {0x0EC6, 0x0EC6},
4403 {0x0EDC, 0x0EDF},
4404 {0x0F00, 0x0F00},
4405 {0x0F40, 0x0F47},
4406 {0x0F49, 0x0F6C},
4407 {0x0F88, 0x0F8C},
4408 {0x1000, 0x102A},
4409 {0x103F, 0x103F},
4410 {0x1050, 0x1055},
4411 {0x105A, 0x105D},
4412 {0x1061, 0x1061},
4413 {0x1065, 0x1066},
4414 {0x106E, 0x1070},
4415 {0x1075, 0x1081},
4416 {0x108E, 0x108E},
4417 {0x10A0, 0x10C5},
4418 {0x10C7, 0x10C7},
4419 {0x10CD, 0x10CD},
4420 {0x10D0, 0x10FA},
4421 {0x10FC, 0x1248},
4422 {0x124A, 0x124D},
4423 {0x1250, 0x1256},
4424 {0x1258, 0x1258},
4425 {0x125A, 0x125D},
4426 {0x1260, 0x1288},
4427 {0x128A, 0x128D},
4428 {0x1290, 0x12B0},
4429 {0x12B2, 0x12B5},
4430 {0x12B8, 0x12BE},
4431 {0x12C0, 0x12C0},
4432 {0x12C2, 0x12C5},
4433 {0x12C8, 0x12D6},
4434 {0x12D8, 0x1310},
4435 {0x1312, 0x1315},
4436 {0x1318, 0x135A},
4437 {0x1380, 0x138F},
4438 {0x13A0, 0x13F5},
4439 {0x13F8, 0x13FD},
4440 {0x1401, 0x166C},
4441 {0x166F, 0x167F},
4442 {0x1681, 0x169A},
4443 {0x16A0, 0x16EA},
4444 {0x16F1, 0x16F8},
4445 {0x1700, 0x1711},
4446 {0x171F, 0x1731},
4447 {0x1740, 0x1751},
4448 {0x1760, 0x176C},
4449 {0x176E, 0x1770},
4450 {0x1780, 0x17B3},
4451 {0x17D7, 0x17D7},
4452 {0x17DC, 0x17DC},
4453 {0x1820, 0x1878},
4454 {0x1880, 0x1884},
4455 {0x1887, 0x18A8},
4456 {0x18AA, 0x18AA},
4457 {0x18B0, 0x18F5},
4458 {0x1900, 0x191E},
4459 {0x1950, 0x196D},
4460 {0x1970, 0x1974},
4461 {0x1980, 0x19AB},
4462 {0x19B0, 0x19C9},
4463 {0x1A00, 0x1A16},
4464 {0x1A20, 0x1A54},
4465 {0x1AA7, 0x1AA7},
4466 {0x1B05, 0x1B33},
4467 {0x1B45, 0x1B4C},
4468 {0x1B83, 0x1BA0},
4469 {0x1BAE, 0x1BAF},
4470 {0x1BBA, 0x1BE5},
4471 {0x1C00, 0x1C23},
4472 {0x1C4D, 0x1C4F},
4473 {0x1C5A, 0x1C7D},
4474 {0x1C80, 0x1C8A},
4475 {0x1C90, 0x1CBA},
4476 {0x1CBD, 0x1CBF},
4477 {0x1CE9, 0x1CEC},
4478 {0x1CEE, 0x1CF3},
4479 {0x1CF5, 0x1CF6},
4480 {0x1CFA, 0x1CFA},
4481 {0x1D00, 0x1DBF},
4482 {0x1E00, 0x1F15},
4483 {0x1F18, 0x1F1D},
4484 {0x1F20, 0x1F45},
4485 {0x1F48, 0x1F4D},
4486 {0x1F50, 0x1F57},
4487 {0x1F59, 0x1F59},
4488 {0x1F5B, 0x1F5B},
4489 {0x1F5D, 0x1F5D},
4490 {0x1F5F, 0x1F7D},
4491 {0x1F80, 0x1FB4},
4492 {0x1FB6, 0x1FBC},
4493 {0x1FBE, 0x1FBE},
4494 {0x1FC2, 0x1FC4},
4495 {0x1FC6, 0x1FCC},
4496 {0x1FD0, 0x1FD3},
4497 {0x1FD6, 0x1FDB},
4498 {0x1FE0, 0x1FEC},
4499 {0x1FF2, 0x1FF4},
4500 {0x1FF6, 0x1FFC},
4501 {0x2071, 0x2071},
4502 {0x207F, 0x207F},
4503 {0x2090, 0x209C},
4504 {0x2102, 0x2102},
4505 {0x2107, 0x2107},
4506 {0x210A, 0x2113},
4507 {0x2115, 0x2115},
4508 {0x2119, 0x211D},
4509 {0x2124, 0x2124},
4510 {0x2126, 0x2126},
4511 {0x2128, 0x2128},
4512 {0x212A, 0x212D},
4513 {0x212F, 0x2139},
4514 {0x213C, 0x213F},
4515 {0x2145, 0x2149},
4516 {0x214E, 0x214E},
4517 {0x2183, 0x2184},
4518 {0x2C00, 0x2CE4},
4519 {0x2CEB, 0x2CEE},
4520 {0x2CF2, 0x2CF3},
4521 {0x2D00, 0x2D25},
4522 {0x2D27, 0x2D27},
4523 {0x2D2D, 0x2D2D},
4524 {0x2D30, 0x2D67},
4525 {0x2D6F, 0x2D6F},
4526 {0x2D80, 0x2D96},
4527 {0x2DA0, 0x2DA6},
4528 {0x2DA8, 0x2DAE},
4529 {0x2DB0, 0x2DB6},
4530 {0x2DB8, 0x2DBE},
4531 {0x2DC0, 0x2DC6},
4532 {0x2DC8, 0x2DCE},
4533 {0x2DD0, 0x2DD6},
4534 {0x2DD8, 0x2DDE},
4535 {0x2E2F, 0x2E2F},
4536 {0x3005, 0x3006},
4537 {0x3031, 0x3035},
4538 {0x303B, 0x303C},
4539 {0x3041, 0x3096},
4540 {0x309D, 0x309F},
4541 {0x30A1, 0x30FA},
4542 {0x30FC, 0x30FF},
4543 {0x3105, 0x312F},
4544 {0x3131, 0x318E},
4545 {0x31A0, 0x31BF},
4546 {0x31F0, 0x31FF},
4547 {0x3400, 0x4DBF},
4548 {0x4E00, 0xA48C},
4549 {0xA4D0, 0xA4FD},
4550 {0xA500, 0xA60C},
4551 {0xA610, 0xA61F},
4552 {0xA62A, 0xA62B},
4553 {0xA640, 0xA66E},
4554 {0xA67F, 0xA69D},
4555 {0xA6A0, 0xA6E5},
4556 {0xA717, 0xA71F},
4557 {0xA722, 0xA788},
4558 {0xA78B, 0xA7CD},
4559 {0xA7D0, 0xA7D1},
4560 {0xA7D3, 0xA7D3},
4561 {0xA7D5, 0xA7DC},
4562 {0xA7F2, 0xA801},
4563 {0xA803, 0xA805},
4564 {0xA807, 0xA80A},
4565 {0xA80C, 0xA822},
4566 {0xA840, 0xA873},
4567 {0xA882, 0xA8B3},
4568 {0xA8F2, 0xA8F7},
4569 {0xA8FB, 0xA8FB},
4570 {0xA8FD, 0xA8FE},
4571 {0xA90A, 0xA925},
4572 {0xA930, 0xA946},
4573 {0xA960, 0xA97C},
4574 {0xA984, 0xA9B2},
4575 {0xA9CF, 0xA9CF},
4576 {0xA9E0, 0xA9E4},
4577 {0xA9E6, 0xA9EF},
4578 {0xA9FA, 0xA9FE},
4579 {0xAA00, 0xAA28},
4580 {0xAA40, 0xAA42},
4581 {0xAA44, 0xAA4B},
4582 {0xAA60, 0xAA76},
4583 {0xAA7A, 0xAA7A},
4584 {0xAA7E, 0xAAAF},
4585 {0xAAB1, 0xAAB1},
4586 {0xAAB5, 0xAAB6},
4587 {0xAAB9, 0xAABD},
4588 {0xAAC0, 0xAAC0},
4589 {0xAAC2, 0xAAC2},
4590 {0xAADB, 0xAADD},
4591 {0xAAE0, 0xAAEA},
4592 {0xAAF2, 0xAAF4},
4593 {0xAB01, 0xAB06},
4594 {0xAB09, 0xAB0E},
4595 {0xAB11, 0xAB16},
4596 {0xAB20, 0xAB26},
4597 {0xAB28, 0xAB2E},
4598 {0xAB30, 0xAB5A},
4599 {0xAB5C, 0xAB69},
4600 {0xAB70, 0xABE2},
4601 {0xAC00, 0xD7A3},
4602 {0xD7B0, 0xD7C6},
4603 {0xD7CB, 0xD7FB},
4604 {0xF900, 0xFA6D},
4605 {0xFA70, 0xFAD9},
4606 {0xFB00, 0xFB06},
4607 {0xFB13, 0xFB17},
4608 {0xFB1D, 0xFB1D},
4609 {0xFB1F, 0xFB28},
4610 {0xFB2A, 0xFB36},
4611 {0xFB38, 0xFB3C},
4612 {0xFB3E, 0xFB3E},
4613 {0xFB40, 0xFB41},
4614 {0xFB43, 0xFB44},
4615 {0xFB46, 0xFBB1},
4616 {0xFBD3, 0xFD3D},
4617 {0xFD50, 0xFD8F},
4618 {0xFD92, 0xFDC7},
4619 {0xFDF0, 0xFDFB},
4620 {0xFE70, 0xFE74},
4621 {0xFE76, 0xFEFC},
4622 {0xFF21, 0xFF3A},
4623 {0xFF41, 0xFF5A},
4624 {0xFF66, 0xFFBE},
4625 {0xFFC2, 0xFFC7},
4626 {0xFFCA, 0xFFCF},
4627 {0xFFD2, 0xFFD7},
4628 {0xFFDA, 0xFFDC},
4629 {0x10000, 0x1000B},
4630 {0x1000D, 0x10026},
4631 {0x10028, 0x1003A},
4632 {0x1003C, 0x1003D},
4633 {0x1003F, 0x1004D},
4634 {0x10050, 0x1005D},
4635 {0x10080, 0x100FA},
4636 {0x10280, 0x1029C},
4637 {0x102A0, 0x102D0},
4638 {0x10300, 0x1031F},
4639 {0x1032D, 0x10340},
4640 {0x10342, 0x10349},
4641 {0x10350, 0x10375},
4642 {0x10380, 0x1039D},
4643 {0x103A0, 0x103C3},
4644 {0x103C8, 0x103CF},
4645 {0x10400, 0x1049D},
4646 {0x104B0, 0x104D3},
4647 {0x104D8, 0x104FB},
4648 {0x10500, 0x10527},
4649 {0x10530, 0x10563},
4650 {0x10570, 0x1057A},
4651 {0x1057C, 0x1058A},
4652 {0x1058C, 0x10592},
4653 {0x10594, 0x10595},
4654 {0x10597, 0x105A1},
4655 {0x105A3, 0x105B1},
4656 {0x105B3, 0x105B9},
4657 {0x105BB, 0x105BC},
4658 {0x105C0, 0x105F3},
4659 {0x10600, 0x10736},
4660 {0x10740, 0x10755},
4661 {0x10760, 0x10767},
4662 {0x10780, 0x10785},
4663 {0x10787, 0x107B0},
4664 {0x107B2, 0x107BA},
4665 {0x10800, 0x10805},
4666 {0x10808, 0x10808},
4667 {0x1080A, 0x10835},
4668 {0x10837, 0x10838},
4669 {0x1083C, 0x1083C},
4670 {0x1083F, 0x10855},
4671 {0x10860, 0x10876},
4672 {0x10880, 0x1089E},
4673 {0x108E0, 0x108F2},
4674 {0x108F4, 0x108F5},
4675 {0x10900, 0x10915},
4676 {0x10920, 0x10939},
4677 {0x10980, 0x109B7},
4678 {0x109BE, 0x109BF},
4679 {0x10A00, 0x10A00},
4680 {0x10A10, 0x10A13},
4681 {0x10A15, 0x10A17},
4682 {0x10A19, 0x10A35},
4683 {0x10A60, 0x10A7C},
4684 {0x10A80, 0x10A9C},
4685 {0x10AC0, 0x10AC7},
4686 {0x10AC9, 0x10AE4},
4687 {0x10B00, 0x10B35},
4688 {0x10B40, 0x10B55},
4689 {0x10B60, 0x10B72},
4690 {0x10B80, 0x10B91},
4691 {0x10C00, 0x10C48},
4692 {0x10C80, 0x10CB2},
4693 {0x10CC0, 0x10CF2},
4694 {0x10D00, 0x10D23},
4695 {0x10D4A, 0x10D65},
4696 {0x10D6F, 0x10D85},
4697 {0x10E80, 0x10EA9},
4698 {0x10EB0, 0x10EB1},
4699 {0x10EC2, 0x10EC4},
4700 {0x10F00, 0x10F1C},
4701 {0x10F27, 0x10F27},
4702 {0x10F30, 0x10F45},
4703 {0x10F70, 0x10F81},
4704 {0x10FB0, 0x10FC4},
4705 {0x10FE0, 0x10FF6},
4706 {0x11003, 0x11037},
4707 {0x11071, 0x11072},
4708 {0x11075, 0x11075},
4709 {0x11083, 0x110AF},
4710 {0x110D0, 0x110E8},
4711 {0x11103, 0x11126},
4712 {0x11144, 0x11144},
4713 {0x11147, 0x11147},
4714 {0x11150, 0x11172},
4715 {0x11176, 0x11176},
4716 {0x11183, 0x111B2},
4717 {0x111C1, 0x111C4},
4718 {0x111DA, 0x111DA},
4719 {0x111DC, 0x111DC},
4720 {0x11200, 0x11211},
4721 {0x11213, 0x1122B},
4722 {0x1123F, 0x11240},
4723 {0x11280, 0x11286},
4724 {0x11288, 0x11288},
4725 {0x1128A, 0x1128D},
4726 {0x1128F, 0x1129D},
4727 {0x1129F, 0x112A8},
4728 {0x112B0, 0x112DE},
4729 {0x11305, 0x1130C},
4730 {0x1130F, 0x11310},
4731 {0x11313, 0x11328},
4732 {0x1132A, 0x11330},
4733 {0x11332, 0x11333},
4734 {0x11335, 0x11339},
4735 {0x1133D, 0x1133D},
4736 {0x11350, 0x11350},
4737 {0x1135D, 0x11361},
4738 {0x11380, 0x11389},
4739 {0x1138B, 0x1138B},
4740 {0x1138E, 0x1138E},
4741 {0x11390, 0x113B5},
4742 {0x113B7, 0x113B7},
4743 {0x113D1, 0x113D1},
4744 {0x113D3, 0x113D3},
4745 {0x11400, 0x11434},
4746 {0x11447, 0x1144A},
4747 {0x1145F, 0x11461},
4748 {0x11480, 0x114AF},
4749 {0x114C4, 0x114C5},
4750 {0x114C7, 0x114C7},
4751 {0x11580, 0x115AE},
4752 {0x115D8, 0x115DB},
4753 {0x11600, 0x1162F},
4754 {0x11644, 0x11644},
4755 {0x11680, 0x116AA},
4756 {0x116B8, 0x116B8},
4757 {0x11700, 0x1171A},
4758 {0x11740, 0x11746},
4759 {0x11800, 0x1182B},
4760 {0x118A0, 0x118DF},
4761 {0x118FF, 0x11906},
4762 {0x11909, 0x11909},
4763 {0x1190C, 0x11913},
4764 {0x11915, 0x11916},
4765 {0x11918, 0x1192F},
4766 {0x1193F, 0x1193F},
4767 {0x11941, 0x11941},
4768 {0x119A0, 0x119A7},
4769 {0x119AA, 0x119D0},
4770 {0x119E1, 0x119E1},
4771 {0x119E3, 0x119E3},
4772 {0x11A00, 0x11A00},
4773 {0x11A0B, 0x11A32},
4774 {0x11A3A, 0x11A3A},
4775 {0x11A50, 0x11A50},
4776 {0x11A5C, 0x11A89},
4777 {0x11A9D, 0x11A9D},
4778 {0x11AB0, 0x11AF8},
4779 {0x11BC0, 0x11BE0},
4780 {0x11C00, 0x11C08},
4781 {0x11C0A, 0x11C2E},
4782 {0x11C40, 0x11C40},
4783 {0x11C72, 0x11C8F},
4784 {0x11D00, 0x11D06},
4785 {0x11D08, 0x11D09},
4786 {0x11D0B, 0x11D30},
4787 {0x11D46, 0x11D46},
4788 {0x11D60, 0x11D65},
4789 {0x11D67, 0x11D68},
4790 {0x11D6A, 0x11D89},
4791 {0x11D98, 0x11D98},
4792 {0x11EE0, 0x11EF2},
4793 {0x11F02, 0x11F02},
4794 {0x11F04, 0x11F10},
4795 {0x11F12, 0x11F33},
4796 {0x11FB0, 0x11FB0},
4797 {0x12000, 0x12399},
4798 {0x12480, 0x12543},
4799 {0x12F90, 0x12FF0},
4800 {0x13000, 0x1342F},
4801 {0x13441, 0x13446},
4802 {0x13460, 0x143FA},
4803 {0x14400, 0x14646},
4804 {0x16100, 0x1611D},
4805 {0x16800, 0x16A38},
4806 {0x16A40, 0x16A5E},
4807 {0x16A70, 0x16ABE},
4808 {0x16AD0, 0x16AED},
4809 {0x16B00, 0x16B2F},
4810 {0x16B40, 0x16B43},
4811 {0x16B63, 0x16B77},
4812 {0x16B7D, 0x16B8F},
4813 {0x16D40, 0x16D6C},
4814 {0x16E40, 0x16E7F},
4815 {0x16F00, 0x16F4A},
4816 {0x16F50, 0x16F50},
4817 {0x16F93, 0x16F9F},
4818 {0x16FE0, 0x16FE1},
4819 {0x16FE3, 0x16FE3},
4820 {0x17000, 0x187F7},
4821 {0x18800, 0x18CD5},
4822 {0x18CFF, 0x18D08},
4823 {0x1AFF0, 0x1AFF3},
4824 {0x1AFF5, 0x1AFFB},
4825 {0x1AFFD, 0x1AFFE},
4826 {0x1B000, 0x1B122},
4827 {0x1B132, 0x1B132},
4828 {0x1B150, 0x1B152},
4829 {0x1B155, 0x1B155},
4830 {0x1B164, 0x1B167},
4831 {0x1B170, 0x1B2FB},
4832 {0x1BC00, 0x1BC6A},
4833 {0x1BC70, 0x1BC7C},
4834 {0x1BC80, 0x1BC88},
4835 {0x1BC90, 0x1BC99},
4836 {0x1D400, 0x1D454},
4837 {0x1D456, 0x1D49C},
4838 {0x1D49E, 0x1D49F},
4839 {0x1D4A2, 0x1D4A2},
4840 {0x1D4A5, 0x1D4A6},
4841 {0x1D4A9, 0x1D4AC},
4842 {0x1D4AE, 0x1D4B9},
4843 {0x1D4BB, 0x1D4BB},
4844 {0x1D4BD, 0x1D4C3},
4845 {0x1D4C5, 0x1D505},
4846 {0x1D507, 0x1D50A},
4847 {0x1D50D, 0x1D514},
4848 {0x1D516, 0x1D51C},
4849 {0x1D51E, 0x1D539},
4850 {0x1D53B, 0x1D53E},
4851 {0x1D540, 0x1D544},
4852 {0x1D546, 0x1D546},
4853 {0x1D54A, 0x1D550},
4854 {0x1D552, 0x1D6A5},
4855 {0x1D6A8, 0x1D6C0},
4856 {0x1D6C2, 0x1D6DA},
4857 {0x1D6DC, 0x1D6FA},
4858 {0x1D6FC, 0x1D714},
4859 {0x1D716, 0x1D734},
4860 {0x1D736, 0x1D74E},
4861 {0x1D750, 0x1D76E},
4862 {0x1D770, 0x1D788},
4863 {0x1D78A, 0x1D7A8},
4864 {0x1D7AA, 0x1D7C2},
4865 {0x1D7C4, 0x1D7CB},
4866 {0x1DF00, 0x1DF1E},
4867 {0x1DF25, 0x1DF2A},
4868 {0x1E030, 0x1E06D},
4869 {0x1E100, 0x1E12C},
4870 {0x1E137, 0x1E13D},
4871 {0x1E14E, 0x1E14E},
4872 {0x1E290, 0x1E2AD},
4873 {0x1E2C0, 0x1E2EB},
4874 {0x1E4D0, 0x1E4EB},
4875 {0x1E5D0, 0x1E5ED},
4876 {0x1E5F0, 0x1E5F0},
4877 {0x1E7E0, 0x1E7E6},
4878 {0x1E7E8, 0x1E7EB},
4879 {0x1E7ED, 0x1E7EE},
4880 {0x1E7F0, 0x1E7FE},
4881 {0x1E800, 0x1E8C4},
4882 {0x1E900, 0x1E943},
4883 {0x1E94B, 0x1E94B},
4884 {0x1EE00, 0x1EE03},
4885 {0x1EE05, 0x1EE1F},
4886 {0x1EE21, 0x1EE22},
4887 {0x1EE24, 0x1EE24},
4888 {0x1EE27, 0x1EE27},
4889 {0x1EE29, 0x1EE32},
4890 {0x1EE34, 0x1EE37},
4891 {0x1EE39, 0x1EE39},
4892 {0x1EE3B, 0x1EE3B},
4893 {0x1EE42, 0x1EE42},
4894 {0x1EE47, 0x1EE47},
4895 {0x1EE49, 0x1EE49},
4896 {0x1EE4B, 0x1EE4B},
4897 {0x1EE4D, 0x1EE4F},
4898 {0x1EE51, 0x1EE52},
4899 {0x1EE54, 0x1EE54},
4900 {0x1EE57, 0x1EE57},
4901 {0x1EE59, 0x1EE59},
4902 {0x1EE5B, 0x1EE5B},
4903 {0x1EE5D, 0x1EE5D},
4904 {0x1EE5F, 0x1EE5F},
4905 {0x1EE61, 0x1EE62},
4906 {0x1EE64, 0x1EE64},
4907 {0x1EE67, 0x1EE6A},
4908 {0x1EE6C, 0x1EE72},
4909 {0x1EE74, 0x1EE77},
4910 {0x1EE79, 0x1EE7C},
4911 {0x1EE7E, 0x1EE7E},
4912 {0x1EE80, 0x1EE89},
4913 {0x1EE8B, 0x1EE9B},
4914 {0x1EEA1, 0x1EEA3},
4915 {0x1EEA5, 0x1EEA9},
4916 {0x1EEAB, 0x1EEBB},
4917 {0x20000, 0x2A6DF},
4918 {0x2A700, 0x2B739},
4919 {0x2B740, 0x2B81D},
4920 {0x2B820, 0x2CEA1},
4921 {0x2CEB0, 0x2EBE0},
4922 {0x2EBF0, 0x2EE5D},
4923 {0x2F800, 0x2FA1D},
4924 {0x30000, 0x3134A},
4925 {0x31350, 0x323AF},
4926 };
4927
4929 inline constexpr code_range gc_M_ranges[] {
4930 {0x0300, 0x036F},
4931 {0x0483, 0x0489},
4932 {0x0591, 0x05BD},
4933 {0x05BF, 0x05BF},
4934 {0x05C1, 0x05C2},
4935 {0x05C4, 0x05C5},
4936 {0x05C7, 0x05C7},
4937 {0x0610, 0x061A},
4938 {0x064B, 0x065F},
4939 {0x0670, 0x0670},
4940 {0x06D6, 0x06DC},
4941 {0x06DF, 0x06E4},
4942 {0x06E7, 0x06E8},
4943 {0x06EA, 0x06ED},
4944 {0x0711, 0x0711},
4945 {0x0730, 0x074A},
4946 {0x07A6, 0x07B0},
4947 {0x07EB, 0x07F3},
4948 {0x07FD, 0x07FD},
4949 {0x0816, 0x0819},
4950 {0x081B, 0x0823},
4951 {0x0825, 0x0827},
4952 {0x0829, 0x082D},
4953 {0x0859, 0x085B},
4954 {0x0897, 0x089F},
4955 {0x08CA, 0x08E1},
4956 {0x08E3, 0x0903},
4957 {0x093A, 0x093C},
4958 {0x093E, 0x094F},
4959 {0x0951, 0x0957},
4960 {0x0962, 0x0963},
4961 {0x0981, 0x0983},
4962 {0x09BC, 0x09BC},
4963 {0x09BE, 0x09C4},
4964 {0x09C7, 0x09C8},
4965 {0x09CB, 0x09CD},
4966 {0x09D7, 0x09D7},
4967 {0x09E2, 0x09E3},
4968 {0x09FE, 0x09FE},
4969 {0x0A01, 0x0A03},
4970 {0x0A3C, 0x0A3C},
4971 {0x0A3E, 0x0A42},
4972 {0x0A47, 0x0A48},
4973 {0x0A4B, 0x0A4D},
4974 {0x0A51, 0x0A51},
4975 {0x0A70, 0x0A71},
4976 {0x0A75, 0x0A75},
4977 {0x0A81, 0x0A83},
4978 {0x0ABC, 0x0ABC},
4979 {0x0ABE, 0x0AC5},
4980 {0x0AC7, 0x0AC9},
4981 {0x0ACB, 0x0ACD},
4982 {0x0AE2, 0x0AE3},
4983 {0x0AFA, 0x0AFF},
4984 {0x0B01, 0x0B03},
4985 {0x0B3C, 0x0B3C},
4986 {0x0B3E, 0x0B44},
4987 {0x0B47, 0x0B48},
4988 {0x0B4B, 0x0B4D},
4989 {0x0B55, 0x0B57},
4990 {0x0B62, 0x0B63},
4991 {0x0B82, 0x0B82},
4992 {0x0BBE, 0x0BC2},
4993 {0x0BC6, 0x0BC8},
4994 {0x0BCA, 0x0BCD},
4995 {0x0BD7, 0x0BD7},
4996 {0x0C00, 0x0C04},
4997 {0x0C3C, 0x0C3C},
4998 {0x0C3E, 0x0C44},
4999 {0x0C46, 0x0C48},
5000 {0x0C4A, 0x0C4D},
5001 {0x0C55, 0x0C56},
5002 {0x0C62, 0x0C63},
5003 {0x0C81, 0x0C83},
5004 {0x0CBC, 0x0CBC},
5005 {0x0CBE, 0x0CC4},
5006 {0x0CC6, 0x0CC8},
5007 {0x0CCA, 0x0CCD},
5008 {0x0CD5, 0x0CD6},
5009 {0x0CE2, 0x0CE3},
5010 {0x0CF3, 0x0CF3},
5011 {0x0D00, 0x0D03},
5012 {0x0D3B, 0x0D3C},
5013 {0x0D3E, 0x0D44},
5014 {0x0D46, 0x0D48},
5015 {0x0D4A, 0x0D4D},
5016 {0x0D57, 0x0D57},
5017 {0x0D62, 0x0D63},
5018 {0x0D81, 0x0D83},
5019 {0x0DCA, 0x0DCA},
5020 {0x0DCF, 0x0DD4},
5021 {0x0DD6, 0x0DD6},
5022 {0x0DD8, 0x0DDF},
5023 {0x0DF2, 0x0DF3},
5024 {0x0E31, 0x0E31},
5025 {0x0E34, 0x0E3A},
5026 {0x0E47, 0x0E4E},
5027 {0x0EB1, 0x0EB1},
5028 {0x0EB4, 0x0EBC},
5029 {0x0EC8, 0x0ECE},
5030 {0x0F18, 0x0F19},
5031 {0x0F35, 0x0F35},
5032 {0x0F37, 0x0F37},
5033 {0x0F39, 0x0F39},
5034 {0x0F3E, 0x0F3F},
5035 {0x0F71, 0x0F84},
5036 {0x0F86, 0x0F87},
5037 {0x0F8D, 0x0F97},
5038 {0x0F99, 0x0FBC},
5039 {0x0FC6, 0x0FC6},
5040 {0x102B, 0x103E},
5041 {0x1056, 0x1059},
5042 {0x105E, 0x1060},
5043 {0x1062, 0x1064},
5044 {0x1067, 0x106D},
5045 {0x1071, 0x1074},
5046 {0x1082, 0x108D},
5047 {0x108F, 0x108F},
5048 {0x109A, 0x109D},
5049 {0x135D, 0x135F},
5050 {0x1712, 0x1715},
5051 {0x1732, 0x1734},
5052 {0x1752, 0x1753},
5053 {0x1772, 0x1773},
5054 {0x17B4, 0x17D3},
5055 {0x17DD, 0x17DD},
5056 {0x180B, 0x180D},
5057 {0x180F, 0x180F},
5058 {0x1885, 0x1886},
5059 {0x18A9, 0x18A9},
5060 {0x1920, 0x192B},
5061 {0x1930, 0x193B},
5062 {0x1A17, 0x1A1B},
5063 {0x1A55, 0x1A5E},
5064 {0x1A60, 0x1A7C},
5065 {0x1A7F, 0x1A7F},
5066 {0x1AB0, 0x1ACE},
5067 {0x1B00, 0x1B04},
5068 {0x1B34, 0x1B44},
5069 {0x1B6B, 0x1B73},
5070 {0x1B80, 0x1B82},
5071 {0x1BA1, 0x1BAD},
5072 {0x1BE6, 0x1BF3},
5073 {0x1C24, 0x1C37},
5074 {0x1CD0, 0x1CD2},
5075 {0x1CD4, 0x1CE8},
5076 {0x1CED, 0x1CED},
5077 {0x1CF4, 0x1CF4},
5078 {0x1CF7, 0x1CF9},
5079 {0x1DC0, 0x1DFF},
5080 {0x20D0, 0x20F0},
5081 {0x2CEF, 0x2CF1},
5082 {0x2D7F, 0x2D7F},
5083 {0x2DE0, 0x2DFF},
5084 {0x302A, 0x302F},
5085 {0x3099, 0x309A},
5086 {0xA66F, 0xA672},
5087 {0xA674, 0xA67D},
5088 {0xA69E, 0xA69F},
5089 {0xA6F0, 0xA6F1},
5090 {0xA802, 0xA802},
5091 {0xA806, 0xA806},
5092 {0xA80B, 0xA80B},
5093 {0xA823, 0xA827},
5094 {0xA82C, 0xA82C},
5095 {0xA880, 0xA881},
5096 {0xA8B4, 0xA8C5},
5097 {0xA8E0, 0xA8F1},
5098 {0xA8FF, 0xA8FF},
5099 {0xA926, 0xA92D},
5100 {0xA947, 0xA953},
5101 {0xA980, 0xA983},
5102 {0xA9B3, 0xA9C0},
5103 {0xA9E5, 0xA9E5},
5104 {0xAA29, 0xAA36},
5105 {0xAA43, 0xAA43},
5106 {0xAA4C, 0xAA4D},
5107 {0xAA7B, 0xAA7D},
5108 {0xAAB0, 0xAAB0},
5109 {0xAAB2, 0xAAB4},
5110 {0xAAB7, 0xAAB8},
5111 {0xAABE, 0xAABF},
5112 {0xAAC1, 0xAAC1},
5113 {0xAAEB, 0xAAEF},
5114 {0xAAF5, 0xAAF6},
5115 {0xABE3, 0xABEA},
5116 {0xABEC, 0xABED},
5117 {0xFB1E, 0xFB1E},
5118 {0xFE00, 0xFE0F},
5119 {0xFE20, 0xFE2F},
5120 {0x101FD, 0x101FD},
5121 {0x102E0, 0x102E0},
5122 {0x10376, 0x1037A},
5123 {0x10A01, 0x10A03},
5124 {0x10A05, 0x10A06},
5125 {0x10A0C, 0x10A0F},
5126 {0x10A38, 0x10A3A},
5127 {0x10A3F, 0x10A3F},
5128 {0x10AE5, 0x10AE6},
5129 {0x10D24, 0x10D27},
5130 {0x10D69, 0x10D6D},
5131 {0x10EAB, 0x10EAC},
5132 {0x10EFC, 0x10EFF},
5133 {0x10F46, 0x10F50},
5134 {0x10F82, 0x10F85},
5135 {0x11000, 0x11002},
5136 {0x11038, 0x11046},
5137 {0x11070, 0x11070},
5138 {0x11073, 0x11074},
5139 {0x1107F, 0x11082},
5140 {0x110B0, 0x110BA},
5141 {0x110C2, 0x110C2},
5142 {0x11100, 0x11102},
5143 {0x11127, 0x11134},
5144 {0x11145, 0x11146},
5145 {0x11173, 0x11173},
5146 {0x11180, 0x11182},
5147 {0x111B3, 0x111C0},
5148 {0x111C9, 0x111CC},
5149 {0x111CE, 0x111CF},
5150 {0x1122C, 0x11237},
5151 {0x1123E, 0x1123E},
5152 {0x11241, 0x11241},
5153 {0x112DF, 0x112EA},
5154 {0x11300, 0x11303},
5155 {0x1133B, 0x1133C},
5156 {0x1133E, 0x11344},
5157 {0x11347, 0x11348},
5158 {0x1134B, 0x1134D},
5159 {0x11357, 0x11357},
5160 {0x11362, 0x11363},
5161 {0x11366, 0x1136C},
5162 {0x11370, 0x11374},
5163 {0x113B8, 0x113C0},
5164 {0x113C2, 0x113C2},
5165 {0x113C5, 0x113C5},
5166 {0x113C7, 0x113CA},
5167 {0x113CC, 0x113D0},
5168 {0x113D2, 0x113D2},
5169 {0x113E1, 0x113E2},
5170 {0x11435, 0x11446},
5171 {0x1145E, 0x1145E},
5172 {0x114B0, 0x114C3},
5173 {0x115AF, 0x115B5},
5174 {0x115B8, 0x115C0},
5175 {0x115DC, 0x115DD},
5176 {0x11630, 0x11640},
5177 {0x116AB, 0x116B7},
5178 {0x1171D, 0x1172B},
5179 {0x1182C, 0x1183A},
5180 {0x11930, 0x11935},
5181 {0x11937, 0x11938},
5182 {0x1193B, 0x1193E},
5183 {0x11940, 0x11940},
5184 {0x11942, 0x11943},
5185 {0x119D1, 0x119D7},
5186 {0x119DA, 0x119E0},
5187 {0x119E4, 0x119E4},
5188 {0x11A01, 0x11A0A},
5189 {0x11A33, 0x11A39},
5190 {0x11A3B, 0x11A3E},
5191 {0x11A47, 0x11A47},
5192 {0x11A51, 0x11A5B},
5193 {0x11A8A, 0x11A99},
5194 {0x11C2F, 0x11C36},
5195 {0x11C38, 0x11C3F},
5196 {0x11C92, 0x11CA7},
5197 {0x11CA9, 0x11CB6},
5198 {0x11D31, 0x11D36},
5199 {0x11D3A, 0x11D3A},
5200 {0x11D3C, 0x11D3D},
5201 {0x11D3F, 0x11D45},
5202 {0x11D47, 0x11D47},
5203 {0x11D8A, 0x11D8E},
5204 {0x11D90, 0x11D91},
5205 {0x11D93, 0x11D97},
5206 {0x11EF3, 0x11EF6},
5207 {0x11F00, 0x11F01},
5208 {0x11F03, 0x11F03},
5209 {0x11F34, 0x11F3A},
5210 {0x11F3E, 0x11F42},
5211 {0x11F5A, 0x11F5A},
5212 {0x13440, 0x13440},
5213 {0x13447, 0x13455},
5214 {0x1611E, 0x1612F},
5215 {0x16AF0, 0x16AF4},
5216 {0x16B30, 0x16B36},
5217 {0x16F4F, 0x16F4F},
5218 {0x16F51, 0x16F87},
5219 {0x16F8F, 0x16F92},
5220 {0x16FE4, 0x16FE4},
5221 {0x16FF0, 0x16FF1},
5222 {0x1BC9D, 0x1BC9E},
5223 {0x1CF00, 0x1CF2D},
5224 {0x1CF30, 0x1CF46},
5225 {0x1D165, 0x1D169},
5226 {0x1D16D, 0x1D172},
5227 {0x1D17B, 0x1D182},
5228 {0x1D185, 0x1D18B},
5229 {0x1D1AA, 0x1D1AD},
5230 {0x1D242, 0x1D244},
5231 {0x1DA00, 0x1DA36},
5232 {0x1DA3B, 0x1DA6C},
5233 {0x1DA75, 0x1DA75},
5234 {0x1DA84, 0x1DA84},
5235 {0x1DA9B, 0x1DA9F},
5236 {0x1DAA1, 0x1DAAF},
5237 {0x1E000, 0x1E006},
5238 {0x1E008, 0x1E018},
5239 {0x1E01B, 0x1E021},
5240 {0x1E023, 0x1E024},
5241 {0x1E026, 0x1E02A},
5242 {0x1E08F, 0x1E08F},
5243 {0x1E130, 0x1E136},
5244 {0x1E2AE, 0x1E2AE},
5245 {0x1E2EC, 0x1E2EF},
5246 {0x1E4EC, 0x1E4EF},
5247 {0x1E5EE, 0x1E5EF},
5248 {0x1E8D0, 0x1E8D6},
5249 {0x1E944, 0x1E94A},
5250 {0xE0100, 0xE01EF},
5251 };
5252
5254 inline constexpr code_range gc_N_ranges[] {
5255 {0x0030, 0x0039},
5256 {0x00B2, 0x00B3},
5257 {0x00B9, 0x00B9},
5258 {0x00BC, 0x00BE},
5259 {0x0660, 0x0669},
5260 {0x06F0, 0x06F9},
5261 {0x07C0, 0x07C9},
5262 {0x0966, 0x096F},
5263 {0x09E6, 0x09EF},
5264 {0x09F4, 0x09F9},
5265 {0x0A66, 0x0A6F},
5266 {0x0AE6, 0x0AEF},
5267 {0x0B66, 0x0B6F},
5268 {0x0B72, 0x0B77},
5269 {0x0BE6, 0x0BF2},
5270 {0x0C66, 0x0C6F},
5271 {0x0C78, 0x0C7E},
5272 {0x0CE6, 0x0CEF},
5273 {0x0D58, 0x0D5E},
5274 {0x0D66, 0x0D78},
5275 {0x0DE6, 0x0DEF},
5276 {0x0E50, 0x0E59},
5277 {0x0ED0, 0x0ED9},
5278 {0x0F20, 0x0F33},
5279 {0x1040, 0x1049},
5280 {0x1090, 0x1099},
5281 {0x1369, 0x137C},
5282 {0x16EE, 0x16F0},
5283 {0x17E0, 0x17E9},
5284 {0x17F0, 0x17F9},
5285 {0x1810, 0x1819},
5286 {0x1946, 0x194F},
5287 {0x19D0, 0x19DA},
5288 {0x1A80, 0x1A89},
5289 {0x1A90, 0x1A99},
5290 {0x1B50, 0x1B59},
5291 {0x1BB0, 0x1BB9},
5292 {0x1C40, 0x1C49},
5293 {0x1C50, 0x1C59},
5294 {0x2070, 0x2070},
5295 {0x2074, 0x2079},
5296 {0x2080, 0x2089},
5297 {0x2150, 0x2182},
5298 {0x2185, 0x2189},
5299 {0x2460, 0x249B},
5300 {0x24EA, 0x24FF},
5301 {0x2776, 0x2793},
5302 {0x2CFD, 0x2CFD},
5303 {0x3007, 0x3007},
5304 {0x3021, 0x3029},
5305 {0x3038, 0x303A},
5306 {0x3192, 0x3195},
5307 {0x3220, 0x3229},
5308 {0x3248, 0x324F},
5309 {0x3251, 0x325F},
5310 {0x3280, 0x3289},
5311 {0x32B1, 0x32BF},
5312 {0xA620, 0xA629},
5313 {0xA6E6, 0xA6EF},
5314 {0xA830, 0xA835},
5315 {0xA8D0, 0xA8D9},
5316 {0xA900, 0xA909},
5317 {0xA9D0, 0xA9D9},
5318 {0xA9F0, 0xA9F9},
5319 {0xAA50, 0xAA59},
5320 {0xABF0, 0xABF9},
5321 {0xFF10, 0xFF19},
5322 {0x10107, 0x10133},
5323 {0x10140, 0x10178},
5324 {0x1018A, 0x1018B},
5325 {0x102E1, 0x102FB},
5326 {0x10320, 0x10323},
5327 {0x10341, 0x10341},
5328 {0x1034A, 0x1034A},
5329 {0x103D1, 0x103D5},
5330 {0x104A0, 0x104A9},
5331 {0x10858, 0x1085F},
5332 {0x10879, 0x1087F},
5333 {0x108A7, 0x108AF},
5334 {0x108FB, 0x108FF},
5335 {0x10916, 0x1091B},
5336 {0x109BC, 0x109BD},
5337 {0x109C0, 0x109CF},
5338 {0x109D2, 0x109FF},
5339 {0x10A40, 0x10A48},
5340 {0x10A7D, 0x10A7E},
5341 {0x10A9D, 0x10A9F},
5342 {0x10AEB, 0x10AEF},
5343 {0x10B58, 0x10B5F},
5344 {0x10B78, 0x10B7F},
5345 {0x10BA9, 0x10BAF},
5346 {0x10CFA, 0x10CFF},
5347 {0x10D30, 0x10D39},
5348 {0x10D40, 0x10D49},
5349 {0x10E60, 0x10E7E},
5350 {0x10F1D, 0x10F26},
5351 {0x10F51, 0x10F54},
5352 {0x10FC5, 0x10FCB},
5353 {0x11052, 0x1106F},
5354 {0x110F0, 0x110F9},
5355 {0x11136, 0x1113F},
5356 {0x111D0, 0x111D9},
5357 {0x111E1, 0x111F4},
5358 {0x112F0, 0x112F9},
5359 {0x11450, 0x11459},
5360 {0x114D0, 0x114D9},
5361 {0x11650, 0x11659},
5362 {0x116C0, 0x116C9},
5363 {0x116D0, 0x116E3},
5364 {0x11730, 0x1173B},
5365 {0x118E0, 0x118F2},
5366 {0x11950, 0x11959},
5367 {0x11BF0, 0x11BF9},
5368 {0x11C50, 0x11C6C},
5369 {0x11D50, 0x11D59},
5370 {0x11DA0, 0x11DA9},
5371 {0x11F50, 0x11F59},
5372 {0x11FC0, 0x11FD4},
5373 {0x12400, 0x1246E},
5374 {0x16130, 0x16139},
5375 {0x16A60, 0x16A69},
5376 {0x16AC0, 0x16AC9},
5377 {0x16B50, 0x16B59},
5378 {0x16B5B, 0x16B61},
5379 {0x16D70, 0x16D79},
5380 {0x16E80, 0x16E96},
5381 {0x1CCF0, 0x1CCF9},
5382 {0x1D2C0, 0x1D2D3},
5383 {0x1D2E0, 0x1D2F3},
5384 {0x1D360, 0x1D378},
5385 {0x1D7CE, 0x1D7FF},
5386 {0x1E140, 0x1E149},
5387 {0x1E2F0, 0x1E2F9},
5388 {0x1E4F0, 0x1E4F9},
5389 {0x1E5F1, 0x1E5FA},
5390 {0x1E8C7, 0x1E8CF},
5391 {0x1E950, 0x1E959},
5392 {0x1EC71, 0x1ECAB},
5393 {0x1ECAD, 0x1ECAF},
5394 {0x1ECB1, 0x1ECB4},
5395 {0x1ED01, 0x1ED2D},
5396 {0x1ED2F, 0x1ED3D},
5397 {0x1F100, 0x1F10C},
5398 {0x1FBF0, 0x1FBF9},
5399 };
5400
5402 inline constexpr code_range gc_P_ranges[] {
5403 {0x0021, 0x0023},
5404 {0x0025, 0x002A},
5405 {0x002C, 0x002F},
5406 {0x003A, 0x003B},
5407 {0x003F, 0x0040},
5408 {0x005B, 0x005D},
5409 {0x005F, 0x005F},
5410 {0x007B, 0x007B},
5411 {0x007D, 0x007D},
5412 {0x00A1, 0x00A1},
5413 {0x00A7, 0x00A7},
5414 {0x00AB, 0x00AB},
5415 {0x00B6, 0x00B7},
5416 {0x00BB, 0x00BB},
5417 {0x00BF, 0x00BF},
5418 {0x037E, 0x037E},
5419 {0x0387, 0x0387},
5420 {0x055A, 0x055F},
5421 {0x0589, 0x058A},
5422 {0x05BE, 0x05BE},
5423 {0x05C0, 0x05C0},
5424 {0x05C3, 0x05C3},
5425 {0x05C6, 0x05C6},
5426 {0x05F3, 0x05F4},
5427 {0x0609, 0x060A},
5428 {0x060C, 0x060D},
5429 {0x061B, 0x061B},
5430 {0x061D, 0x061F},
5431 {0x066A, 0x066D},
5432 {0x06D4, 0x06D4},
5433 {0x0700, 0x070D},
5434 {0x07F7, 0x07F9},
5435 {0x0830, 0x083E},
5436 {0x085E, 0x085E},
5437 {0x0964, 0x0965},
5438 {0x0970, 0x0970},
5439 {0x09FD, 0x09FD},
5440 {0x0A76, 0x0A76},
5441 {0x0AF0, 0x0AF0},
5442 {0x0C77, 0x0C77},
5443 {0x0C84, 0x0C84},
5444 {0x0DF4, 0x0DF4},
5445 {0x0E4F, 0x0E4F},
5446 {0x0E5A, 0x0E5B},
5447 {0x0F04, 0x0F12},
5448 {0x0F14, 0x0F14},
5449 {0x0F3A, 0x0F3D},
5450 {0x0F85, 0x0F85},
5451 {0x0FD0, 0x0FD4},
5452 {0x0FD9, 0x0FDA},
5453 {0x104A, 0x104F},
5454 {0x10FB, 0x10FB},
5455 {0x1360, 0x1368},
5456 {0x1400, 0x1400},
5457 {0x166E, 0x166E},
5458 {0x169B, 0x169C},
5459 {0x16EB, 0x16ED},
5460 {0x1735, 0x1736},
5461 {0x17D4, 0x17D6},
5462 {0x17D8, 0x17DA},
5463 {0x1800, 0x180A},
5464 {0x1944, 0x1945},
5465 {0x1A1E, 0x1A1F},
5466 {0x1AA0, 0x1AA6},
5467 {0x1AA8, 0x1AAD},
5468 {0x1B4E, 0x1B4F},
5469 {0x1B5A, 0x1B60},
5470 {0x1B7D, 0x1B7F},
5471 {0x1BFC, 0x1BFF},
5472 {0x1C3B, 0x1C3F},
5473 {0x1C7E, 0x1C7F},
5474 {0x1CC0, 0x1CC7},
5475 {0x1CD3, 0x1CD3},
5476 {0x2010, 0x2027},
5477 {0x2030, 0x2043},
5478 {0x2045, 0x2051},
5479 {0x2053, 0x205E},
5480 {0x207D, 0x207E},
5481 {0x208D, 0x208E},
5482 {0x2308, 0x230B},
5483 {0x2329, 0x232A},
5484 {0x2768, 0x2775},
5485 {0x27C5, 0x27C6},
5486 {0x27E6, 0x27EF},
5487 {0x2983, 0x2998},
5488 {0x29D8, 0x29DB},
5489 {0x29FC, 0x29FD},
5490 {0x2CF9, 0x2CFC},
5491 {0x2CFE, 0x2CFF},
5492 {0x2D70, 0x2D70},
5493 {0x2E00, 0x2E2E},
5494 {0x2E30, 0x2E4F},
5495 {0x2E52, 0x2E5D},
5496 {0x3001, 0x3003},
5497 {0x3008, 0x3011},
5498 {0x3014, 0x301F},
5499 {0x3030, 0x3030},
5500 {0x303D, 0x303D},
5501 {0x30A0, 0x30A0},
5502 {0x30FB, 0x30FB},
5503 {0xA4FE, 0xA4FF},
5504 {0xA60D, 0xA60F},
5505 {0xA673, 0xA673},
5506 {0xA67E, 0xA67E},
5507 {0xA6F2, 0xA6F7},
5508 {0xA874, 0xA877},
5509 {0xA8CE, 0xA8CF},
5510 {0xA8F8, 0xA8FA},
5511 {0xA8FC, 0xA8FC},
5512 {0xA92E, 0xA92F},
5513 {0xA95F, 0xA95F},
5514 {0xA9C1, 0xA9CD},
5515 {0xA9DE, 0xA9DF},
5516 {0xAA5C, 0xAA5F},
5517 {0xAADE, 0xAADF},
5518 {0xAAF0, 0xAAF1},
5519 {0xABEB, 0xABEB},
5520 {0xFD3E, 0xFD3F},
5521 {0xFE10, 0xFE19},
5522 {0xFE30, 0xFE52},
5523 {0xFE54, 0xFE61},
5524 {0xFE63, 0xFE63},
5525 {0xFE68, 0xFE68},
5526 {0xFE6A, 0xFE6B},
5527 {0xFF01, 0xFF03},
5528 {0xFF05, 0xFF0A},
5529 {0xFF0C, 0xFF0F},
5530 {0xFF1A, 0xFF1B},
5531 {0xFF1F, 0xFF20},
5532 {0xFF3B, 0xFF3D},
5533 {0xFF3F, 0xFF3F},
5534 {0xFF5B, 0xFF5B},
5535 {0xFF5D, 0xFF5D},
5536 {0xFF5F, 0xFF65},
5537 {0x10100, 0x10102},
5538 {0x1039F, 0x1039F},
5539 {0x103D0, 0x103D0},
5540 {0x1056F, 0x1056F},
5541 {0x10857, 0x10857},
5542 {0x1091F, 0x1091F},
5543 {0x1093F, 0x1093F},
5544 {0x10A50, 0x10A58},
5545 {0x10A7F, 0x10A7F},
5546 {0x10AF0, 0x10AF6},
5547 {0x10B39, 0x10B3F},
5548 {0x10B99, 0x10B9C},
5549 {0x10D6E, 0x10D6E},
5550 {0x10EAD, 0x10EAD},
5551 {0x10F55, 0x10F59},
5552 {0x10F86, 0x10F89},
5553 {0x11047, 0x1104D},
5554 {0x110BB, 0x110BC},
5555 {0x110BE, 0x110C1},
5556 {0x11140, 0x11143},
5557 {0x11174, 0x11175},
5558 {0x111C5, 0x111C8},
5559 {0x111CD, 0x111CD},
5560 {0x111DB, 0x111DB},
5561 {0x111DD, 0x111DF},
5562 {0x11238, 0x1123D},
5563 {0x112A9, 0x112A9},
5564 {0x113D4, 0x113D5},
5565 {0x113D7, 0x113D8},
5566 {0x1144B, 0x1144F},
5567 {0x1145A, 0x1145B},
5568 {0x1145D, 0x1145D},
5569 {0x114C6, 0x114C6},
5570 {0x115C1, 0x115D7},
5571 {0x11641, 0x11643},
5572 {0x11660, 0x1166C},
5573 {0x116B9, 0x116B9},
5574 {0x1173C, 0x1173E},
5575 {0x1183B, 0x1183B},
5576 {0x11944, 0x11946},
5577 {0x119E2, 0x119E2},
5578 {0x11A3F, 0x11A46},
5579 {0x11A9A, 0x11A9C},
5580 {0x11A9E, 0x11AA2},
5581 {0x11B00, 0x11B09},
5582 {0x11BE1, 0x11BE1},
5583 {0x11C41, 0x11C45},
5584 {0x11C70, 0x11C71},
5585 {0x11EF7, 0x11EF8},
5586 {0x11F43, 0x11F4F},
5587 {0x11FFF, 0x11FFF},
5588 {0x12470, 0x12474},
5589 {0x12FF1, 0x12FF2},
5590 {0x16A6E, 0x16A6F},
5591 {0x16AF5, 0x16AF5},
5592 {0x16B37, 0x16B3B},
5593 {0x16B44, 0x16B44},
5594 {0x16D6D, 0x16D6F},
5595 {0x16E97, 0x16E9A},
5596 {0x16FE2, 0x16FE2},
5597 {0x1BC9F, 0x1BC9F},
5598 {0x1DA87, 0x1DA8B},
5599 {0x1E5FF, 0x1E5FF},
5600 {0x1E95E, 0x1E95F},
5601 };
5602
5604 inline constexpr code_range gc_S_ranges[] {
5605 {0x0024, 0x0024},
5606 {0x002B, 0x002B},
5607 {0x003C, 0x003E},
5608 {0x005E, 0x005E},
5609 {0x0060, 0x0060},
5610 {0x007C, 0x007C},
5611 {0x007E, 0x007E},
5612 {0x00A2, 0x00A6},
5613 {0x00A8, 0x00A9},
5614 {0x00AC, 0x00AC},
5615 {0x00AE, 0x00B1},
5616 {0x00B4, 0x00B4},
5617 {0x00B8, 0x00B8},
5618 {0x00D7, 0x00D7},
5619 {0x00F7, 0x00F7},
5620 {0x02C2, 0x02C5},
5621 {0x02D2, 0x02DF},
5622 {0x02E5, 0x02EB},
5623 {0x02ED, 0x02ED},
5624 {0x02EF, 0x02FF},
5625 {0x0375, 0x0375},
5626 {0x0384, 0x0385},
5627 {0x03F6, 0x03F6},
5628 {0x0482, 0x0482},
5629 {0x058D, 0x058F},
5630 {0x0606, 0x0608},
5631 {0x060B, 0x060B},
5632 {0x060E, 0x060F},
5633 {0x06DE, 0x06DE},
5634 {0x06E9, 0x06E9},
5635 {0x06FD, 0x06FE},
5636 {0x07F6, 0x07F6},
5637 {0x07FE, 0x07FF},
5638 {0x0888, 0x0888},
5639 {0x09F2, 0x09F3},
5640 {0x09FA, 0x09FB},
5641 {0x0AF1, 0x0AF1},
5642 {0x0B70, 0x0B70},
5643 {0x0BF3, 0x0BFA},
5644 {0x0C7F, 0x0C7F},
5645 {0x0D4F, 0x0D4F},
5646 {0x0D79, 0x0D79},
5647 {0x0E3F, 0x0E3F},
5648 {0x0F01, 0x0F03},
5649 {0x0F13, 0x0F13},
5650 {0x0F15, 0x0F17},
5651 {0x0F1A, 0x0F1F},
5652 {0x0F34, 0x0F34},
5653 {0x0F36, 0x0F36},
5654 {0x0F38, 0x0F38},
5655 {0x0FBE, 0x0FC5},
5656 {0x0FC7, 0x0FCC},
5657 {0x0FCE, 0x0FCF},
5658 {0x0FD5, 0x0FD8},
5659 {0x109E, 0x109F},
5660 {0x1390, 0x1399},
5661 {0x166D, 0x166D},
5662 {0x17DB, 0x17DB},
5663 {0x1940, 0x1940},
5664 {0x19DE, 0x19FF},
5665 {0x1B61, 0x1B6A},
5666 {0x1B74, 0x1B7C},
5667 {0x1FBD, 0x1FBD},
5668 {0x1FBF, 0x1FC1},
5669 {0x1FCD, 0x1FCF},
5670 {0x1FDD, 0x1FDF},
5671 {0x1FED, 0x1FEF},
5672 {0x1FFD, 0x1FFE},
5673 {0x2044, 0x2044},
5674 {0x2052, 0x2052},
5675 {0x207A, 0x207C},
5676 {0x208A, 0x208C},
5677 {0x20A0, 0x20C0},
5678 {0x2100, 0x2101},
5679 {0x2103, 0x2106},
5680 {0x2108, 0x2109},
5681 {0x2114, 0x2114},
5682 {0x2116, 0x2118},
5683 {0x211E, 0x2123},
5684 {0x2125, 0x2125},
5685 {0x2127, 0x2127},
5686 {0x2129, 0x2129},
5687 {0x212E, 0x212E},
5688 {0x213A, 0x213B},
5689 {0x2140, 0x2144},
5690 {0x214A, 0x214D},
5691 {0x214F, 0x214F},
5692 {0x218A, 0x218B},
5693 {0x2190, 0x2307},
5694 {0x230C, 0x2328},
5695 {0x232B, 0x2429},
5696 {0x2440, 0x244A},
5697 {0x249C, 0x24E9},
5698 {0x2500, 0x2767},
5699 {0x2794, 0x27C4},
5700 {0x27C7, 0x27E5},
5701 {0x27F0, 0x2982},
5702 {0x2999, 0x29D7},
5703 {0x29DC, 0x29FB},
5704 {0x29FE, 0x2B73},
5705 {0x2B76, 0x2B95},
5706 {0x2B97, 0x2BFF},
5707 {0x2CE5, 0x2CEA},
5708 {0x2E50, 0x2E51},
5709 {0x2E80, 0x2E99},
5710 {0x2E9B, 0x2EF3},
5711 {0x2F00, 0x2FD5},
5712 {0x2FF0, 0x2FFF},
5713 {0x3004, 0x3004},
5714 {0x3012, 0x3013},
5715 {0x3020, 0x3020},
5716 {0x3036, 0x3037},
5717 {0x303E, 0x303F},
5718 {0x309B, 0x309C},
5719 {0x3190, 0x3191},
5720 {0x3196, 0x319F},
5721 {0x31C0, 0x31E5},
5722 {0x31EF, 0x31EF},
5723 {0x3200, 0x321E},
5724 {0x322A, 0x3247},
5725 {0x3250, 0x3250},
5726 {0x3260, 0x327F},
5727 {0x328A, 0x32B0},
5728 {0x32C0, 0x33FF},
5729 {0x4DC0, 0x4DFF},
5730 {0xA490, 0xA4C6},
5731 {0xA700, 0xA716},
5732 {0xA720, 0xA721},
5733 {0xA789, 0xA78A},
5734 {0xA828, 0xA82B},
5735 {0xA836, 0xA839},
5736 {0xAA77, 0xAA79},
5737 {0xAB5B, 0xAB5B},
5738 {0xAB6A, 0xAB6B},
5739 {0xFB29, 0xFB29},
5740 {0xFBB2, 0xFBC2},
5741 {0xFD40, 0xFD4F},
5742 {0xFDCF, 0xFDCF},
5743 {0xFDFC, 0xFDFF},
5744 {0xFE62, 0xFE62},
5745 {0xFE64, 0xFE66},
5746 {0xFE69, 0xFE69},
5747 {0xFF04, 0xFF04},
5748 {0xFF0B, 0xFF0B},
5749 {0xFF1C, 0xFF1E},
5750 {0xFF3E, 0xFF3E},
5751 {0xFF40, 0xFF40},
5752 {0xFF5C, 0xFF5C},
5753 {0xFF5E, 0xFF5E},
5754 {0xFFE0, 0xFFE6},
5755 {0xFFE8, 0xFFEE},
5756 {0xFFFC, 0xFFFD},
5757 {0x10137, 0x1013F},
5758 {0x10179, 0x10189},
5759 {0x1018C, 0x1018E},
5760 {0x10190, 0x1019C},
5761 {0x101A0, 0x101A0},
5762 {0x101D0, 0x101FC},
5763 {0x10877, 0x10878},
5764 {0x10AC8, 0x10AC8},
5765 {0x10D8E, 0x10D8F},
5766 {0x1173F, 0x1173F},
5767 {0x11FD5, 0x11FF1},
5768 {0x16B3C, 0x16B3F},
5769 {0x16B45, 0x16B45},
5770 {0x1BC9C, 0x1BC9C},
5771 {0x1CC00, 0x1CCEF},
5772 {0x1CD00, 0x1CEB3},
5773 {0x1CF50, 0x1CFC3},
5774 {0x1D000, 0x1D0F5},
5775 {0x1D100, 0x1D126},
5776 {0x1D129, 0x1D164},
5777 {0x1D16A, 0x1D16C},
5778 {0x1D183, 0x1D184},
5779 {0x1D18C, 0x1D1A9},
5780 {0x1D1AE, 0x1D1EA},
5781 {0x1D200, 0x1D241},
5782 {0x1D245, 0x1D245},
5783 {0x1D300, 0x1D356},
5784 {0x1D6C1, 0x1D6C1},
5785 {0x1D6DB, 0x1D6DB},
5786 {0x1D6FB, 0x1D6FB},
5787 {0x1D715, 0x1D715},
5788 {0x1D735, 0x1D735},
5789 {0x1D74F, 0x1D74F},
5790 {0x1D76F, 0x1D76F},
5791 {0x1D789, 0x1D789},
5792 {0x1D7A9, 0x1D7A9},
5793 {0x1D7C3, 0x1D7C3},
5794 {0x1D800, 0x1D9FF},
5795 {0x1DA37, 0x1DA3A},
5796 {0x1DA6D, 0x1DA74},
5797 {0x1DA76, 0x1DA83},
5798 {0x1DA85, 0x1DA86},
5799 {0x1E14F, 0x1E14F},
5800 {0x1E2FF, 0x1E2FF},
5801 {0x1ECAC, 0x1ECAC},
5802 {0x1ECB0, 0x1ECB0},
5803 {0x1ED2E, 0x1ED2E},
5804 {0x1EEF0, 0x1EEF1},
5805 {0x1F000, 0x1F02B},
5806 {0x1F030, 0x1F093},
5807 {0x1F0A0, 0x1F0AE},
5808 {0x1F0B1, 0x1F0BF},
5809 {0x1F0C1, 0x1F0CF},
5810 {0x1F0D1, 0x1F0F5},
5811 {0x1F10D, 0x1F1AD},
5812 {0x1F1E6, 0x1F202},
5813 {0x1F210, 0x1F23B},
5814 {0x1F240, 0x1F248},
5815 {0x1F250, 0x1F251},
5816 {0x1F260, 0x1F265},
5817 {0x1F300, 0x1F6D7},
5818 {0x1F6DC, 0x1F6EC},
5819 {0x1F6F0, 0x1F6FC},
5820 {0x1F700, 0x1F776},
5821 {0x1F77B, 0x1F7D9},
5822 {0x1F7E0, 0x1F7EB},
5823 {0x1F7F0, 0x1F7F0},
5824 {0x1F800, 0x1F80B},
5825 {0x1F810, 0x1F847},
5826 {0x1F850, 0x1F859},
5827 {0x1F860, 0x1F887},
5828 {0x1F890, 0x1F8AD},
5829 {0x1F8B0, 0x1F8BB},
5830 {0x1F8C0, 0x1F8C1},
5831 {0x1F900, 0x1FA53},
5832 {0x1FA60, 0x1FA6D},
5833 {0x1FA70, 0x1FA7C},
5834 {0x1FA80, 0x1FA89},
5835 {0x1FA8F, 0x1FAC6},
5836 {0x1FACE, 0x1FADC},
5837 {0x1FADF, 0x1FAE9},
5838 {0x1FAF0, 0x1FAF8},
5839 {0x1FB00, 0x1FB92},
5840 {0x1FB94, 0x1FBEF},
5841 };
5842
5844 inline constexpr code_range gc_Z_ranges[] {
5845 {0x0020, 0x0020},
5846 {0x00A0, 0x00A0},
5847 {0x1680, 0x1680},
5848 {0x2000, 0x200A},
5849 {0x2028, 0x2029},
5850 {0x202F, 0x202F},
5851 {0x205F, 0x205F},
5852 {0x3000, 0x3000},
5853 };
5854
5856 inline constexpr code_range gc_C_ranges[] {
5857 {0x0000, 0x001F},
5858 {0x007F, 0x009F},
5859 {0x00AD, 0x00AD},
5860 {0x0378, 0x0379},
5861 {0x0380, 0x0383},
5862 {0x038B, 0x038B},
5863 {0x038D, 0x038D},
5864 {0x03A2, 0x03A2},
5865 {0x0530, 0x0530},
5866 {0x0557, 0x0558},
5867 {0x058B, 0x058C},
5868 {0x0590, 0x0590},
5869 {0x05C8, 0x05CF},
5870 {0x05EB, 0x05EE},
5871 {0x05F5, 0x0605},
5872 {0x061C, 0x061C},
5873 {0x06DD, 0x06DD},
5874 {0x070E, 0x070F},
5875 {0x074B, 0x074C},
5876 {0x07B2, 0x07BF},
5877 {0x07FB, 0x07FC},
5878 {0x082E, 0x082F},
5879 {0x083F, 0x083F},
5880 {0x085C, 0x085D},
5881 {0x085F, 0x085F},
5882 {0x086B, 0x086F},
5883 {0x088F, 0x0896},
5884 {0x08E2, 0x08E2},
5885 {0x0984, 0x0984},
5886 {0x098D, 0x098E},
5887 {0x0991, 0x0992},
5888 {0x09A9, 0x09A9},
5889 {0x09B1, 0x09B1},
5890 {0x09B3, 0x09B5},
5891 {0x09BA, 0x09BB},
5892 {0x09C5, 0x09C6},
5893 {0x09C9, 0x09CA},
5894 {0x09CF, 0x09D6},
5895 {0x09D8, 0x09DB},
5896 {0x09DE, 0x09DE},
5897 {0x09E4, 0x09E5},
5898 {0x09FF, 0x0A00},
5899 {0x0A04, 0x0A04},
5900 {0x0A0B, 0x0A0E},
5901 {0x0A11, 0x0A12},
5902 {0x0A29, 0x0A29},
5903 {0x0A31, 0x0A31},
5904 {0x0A34, 0x0A34},
5905 {0x0A37, 0x0A37},
5906 {0x0A3A, 0x0A3B},
5907 {0x0A3D, 0x0A3D},
5908 {0x0A43, 0x0A46},
5909 {0x0A49, 0x0A4A},
5910 {0x0A4E, 0x0A50},
5911 {0x0A52, 0x0A58},
5912 {0x0A5D, 0x0A5D},
5913 {0x0A5F, 0x0A65},
5914 {0x0A77, 0x0A80},
5915 {0x0A84, 0x0A84},
5916 {0x0A8E, 0x0A8E},
5917 {0x0A92, 0x0A92},
5918 {0x0AA9, 0x0AA9},
5919 {0x0AB1, 0x0AB1},
5920 {0x0AB4, 0x0AB4},
5921 {0x0ABA, 0x0ABB},
5922 {0x0AC6, 0x0AC6},
5923 {0x0ACA, 0x0ACA},
5924 {0x0ACE, 0x0ACF},
5925 {0x0AD1, 0x0ADF},
5926 {0x0AE4, 0x0AE5},
5927 {0x0AF2, 0x0AF8},
5928 {0x0B00, 0x0B00},
5929 {0x0B04, 0x0B04},
5930 {0x0B0D, 0x0B0E},
5931 {0x0B11, 0x0B12},
5932 {0x0B29, 0x0B29},
5933 {0x0B31, 0x0B31},
5934 {0x0B34, 0x0B34},
5935 {0x0B3A, 0x0B3B},
5936 {0x0B45, 0x0B46},
5937 {0x0B49, 0x0B4A},
5938 {0x0B4E, 0x0B54},
5939 {0x0B58, 0x0B5B},
5940 {0x0B5E, 0x0B5E},
5941 {0x0B64, 0x0B65},
5942 {0x0B78, 0x0B81},
5943 {0x0B84, 0x0B84},
5944 {0x0B8B, 0x0B8D},
5945 {0x0B91, 0x0B91},
5946 {0x0B96, 0x0B98},
5947 {0x0B9B, 0x0B9B},
5948 {0x0B9D, 0x0B9D},
5949 {0x0BA0, 0x0BA2},
5950 {0x0BA5, 0x0BA7},
5951 {0x0BAB, 0x0BAD},
5952 {0x0BBA, 0x0BBD},
5953 {0x0BC3, 0x0BC5},
5954 {0x0BC9, 0x0BC9},
5955 {0x0BCE, 0x0BCF},
5956 {0x0BD1, 0x0BD6},
5957 {0x0BD8, 0x0BE5},
5958 {0x0BFB, 0x0BFF},
5959 {0x0C0D, 0x0C0D},
5960 {0x0C11, 0x0C11},
5961 {0x0C29, 0x0C29},
5962 {0x0C3A, 0x0C3B},
5963 {0x0C45, 0x0C45},
5964 {0x0C49, 0x0C49},
5965 {0x0C4E, 0x0C54},
5966 {0x0C57, 0x0C57},
5967 {0x0C5B, 0x0C5C},
5968 {0x0C5E, 0x0C5F},
5969 {0x0C64, 0x0C65},
5970 {0x0C70, 0x0C76},
5971 {0x0C8D, 0x0C8D},
5972 {0x0C91, 0x0C91},
5973 {0x0CA9, 0x0CA9},
5974 {0x0CB4, 0x0CB4},
5975 {0x0CBA, 0x0CBB},
5976 {0x0CC5, 0x0CC5},
5977 {0x0CC9, 0x0CC9},
5978 {0x0CCE, 0x0CD4},
5979 {0x0CD7, 0x0CDC},
5980 {0x0CDF, 0x0CDF},
5981 {0x0CE4, 0x0CE5},
5982 {0x0CF0, 0x0CF0},
5983 {0x0CF4, 0x0CFF},
5984 {0x0D0D, 0x0D0D},
5985 {0x0D11, 0x0D11},
5986 {0x0D45, 0x0D45},
5987 {0x0D49, 0x0D49},
5988 {0x0D50, 0x0D53},
5989 {0x0D64, 0x0D65},
5990 {0x0D80, 0x0D80},
5991 {0x0D84, 0x0D84},
5992 {0x0D97, 0x0D99},
5993 {0x0DB2, 0x0DB2},
5994 {0x0DBC, 0x0DBC},
5995 {0x0DBE, 0x0DBF},
5996 {0x0DC7, 0x0DC9},
5997 {0x0DCB, 0x0DCE},
5998 {0x0DD5, 0x0DD5},
5999 {0x0DD7, 0x0DD7},
6000 {0x0DE0, 0x0DE5},
6001 {0x0DF0, 0x0DF1},
6002 {0x0DF5, 0x0E00},
6003 {0x0E3B, 0x0E3E},
6004 {0x0E5C, 0x0E80},
6005 {0x0E83, 0x0E83},
6006 {0x0E85, 0x0E85},
6007 {0x0E8B, 0x0E8B},
6008 {0x0EA4, 0x0EA4},
6009 {0x0EA6, 0x0EA6},
6010 {0x0EBE, 0x0EBF},
6011 {0x0EC5, 0x0EC5},
6012 {0x0EC7, 0x0EC7},
6013 {0x0ECF, 0x0ECF},
6014 {0x0EDA, 0x0EDB},
6015 {0x0EE0, 0x0EFF},
6016 {0x0F48, 0x0F48},
6017 {0x0F6D, 0x0F70},
6018 {0x0F98, 0x0F98},
6019 {0x0FBD, 0x0FBD},
6020 {0x0FCD, 0x0FCD},
6021 {0x0FDB, 0x0FFF},
6022 {0x10C6, 0x10C6},
6023 {0x10C8, 0x10CC},
6024 {0x10CE, 0x10CF},
6025 {0x1249, 0x1249},
6026 {0x124E, 0x124F},
6027 {0x1257, 0x1257},
6028 {0x1259, 0x1259},
6029 {0x125E, 0x125F},
6030 {0x1289, 0x1289},
6031 {0x128E, 0x128F},
6032 {0x12B1, 0x12B1},
6033 {0x12B6, 0x12B7},
6034 {0x12BF, 0x12BF},
6035 {0x12C1, 0x12C1},
6036 {0x12C6, 0x12C7},
6037 {0x12D7, 0x12D7},
6038 {0x1311, 0x1311},
6039 {0x1316, 0x1317},
6040 {0x135B, 0x135C},
6041 {0x137D, 0x137F},
6042 {0x139A, 0x139F},
6043 {0x13F6, 0x13F7},
6044 {0x13FE, 0x13FF},
6045 {0x169D, 0x169F},
6046 {0x16F9, 0x16FF},
6047 {0x1716, 0x171E},
6048 {0x1737, 0x173F},
6049 {0x1754, 0x175F},
6050 {0x176D, 0x176D},
6051 {0x1771, 0x1771},
6052 {0x1774, 0x177F},
6053 {0x17DE, 0x17DF},
6054 {0x17EA, 0x17EF},
6055 {0x17FA, 0x17FF},
6056 {0x180E, 0x180E},
6057 {0x181A, 0x181F},
6058 {0x1879, 0x187F},
6059 {0x18AB, 0x18AF},
6060 {0x18F6, 0x18FF},
6061 {0x191F, 0x191F},
6062 {0x192C, 0x192F},
6063 {0x193C, 0x193F},
6064 {0x1941, 0x1943},
6065 {0x196E, 0x196F},
6066 {0x1975, 0x197F},
6067 {0x19AC, 0x19AF},
6068 {0x19CA, 0x19CF},
6069 {0x19DB, 0x19DD},
6070 {0x1A1C, 0x1A1D},
6071 {0x1A5F, 0x1A5F},
6072 {0x1A7D, 0x1A7E},
6073 {0x1A8A, 0x1A8F},
6074 {0x1A9A, 0x1A9F},
6075 {0x1AAE, 0x1AAF},
6076 {0x1ACF, 0x1AFF},
6077 {0x1B4D, 0x1B4D},
6078 {0x1BF4, 0x1BFB},
6079 {0x1C38, 0x1C3A},
6080 {0x1C4A, 0x1C4C},
6081 {0x1C8B, 0x1C8F},
6082 {0x1CBB, 0x1CBC},
6083 {0x1CC8, 0x1CCF},
6084 {0x1CFB, 0x1CFF},
6085 {0x1F16, 0x1F17},
6086 {0x1F1E, 0x1F1F},
6087 {0x1F46, 0x1F47},
6088 {0x1F4E, 0x1F4F},
6089 {0x1F58, 0x1F58},
6090 {0x1F5A, 0x1F5A},
6091 {0x1F5C, 0x1F5C},
6092 {0x1F5E, 0x1F5E},
6093 {0x1F7E, 0x1F7F},
6094 {0x1FB5, 0x1FB5},
6095 {0x1FC5, 0x1FC5},
6096 {0x1FD4, 0x1FD5},
6097 {0x1FDC, 0x1FDC},
6098 {0x1FF0, 0x1FF1},
6099 {0x1FF5, 0x1FF5},
6100 {0x1FFF, 0x1FFF},
6101 {0x200B, 0x200F},
6102 {0x202A, 0x202E},
6103 {0x2060, 0x206F},
6104 {0x2072, 0x2073},
6105 {0x208F, 0x208F},
6106 {0x209D, 0x209F},
6107 {0x20C1, 0x20CF},
6108 {0x20F1, 0x20FF},
6109 {0x218C, 0x218F},
6110 {0x242A, 0x243F},
6111 {0x244B, 0x245F},
6112 {0x2B74, 0x2B75},
6113 {0x2B96, 0x2B96},
6114 {0x2CF4, 0x2CF8},
6115 {0x2D26, 0x2D26},
6116 {0x2D28, 0x2D2C},
6117 {0x2D2E, 0x2D2F},
6118 {0x2D68, 0x2D6E},
6119 {0x2D71, 0x2D7E},
6120 {0x2D97, 0x2D9F},
6121 {0x2DA7, 0x2DA7},
6122 {0x2DAF, 0x2DAF},
6123 {0x2DB7, 0x2DB7},
6124 {0x2DBF, 0x2DBF},
6125 {0x2DC7, 0x2DC7},
6126 {0x2DCF, 0x2DCF},
6127 {0x2DD7, 0x2DD7},
6128 {0x2DDF, 0x2DDF},
6129 {0x2E5E, 0x2E7F},
6130 {0x2E9A, 0x2E9A},
6131 {0x2EF4, 0x2EFF},
6132 {0x2FD6, 0x2FEF},
6133 {0x3040, 0x3040},
6134 {0x3097, 0x3098},
6135 {0x3100, 0x3104},
6136 {0x3130, 0x3130},
6137 {0x318F, 0x318F},
6138 {0x31E6, 0x31EE},
6139 {0x321F, 0x321F},
6140 {0xA48D, 0xA48F},
6141 {0xA4C7, 0xA4CF},
6142 {0xA62C, 0xA63F},
6143 {0xA6F8, 0xA6FF},
6144 {0xA7CE, 0xA7CF},
6145 {0xA7D2, 0xA7D2},
6146 {0xA7D4, 0xA7D4},
6147 {0xA7DD, 0xA7F1},
6148 {0xA82D, 0xA82F},
6149 {0xA83A, 0xA83F},
6150 {0xA878, 0xA87F},
6151 {0xA8C6, 0xA8CD},
6152 {0xA8DA, 0xA8DF},
6153 {0xA954, 0xA95E},
6154 {0xA97D, 0xA97F},
6155 {0xA9CE, 0xA9CE},
6156 {0xA9DA, 0xA9DD},
6157 {0xA9FF, 0xA9FF},
6158 {0xAA37, 0xAA3F},
6159 {0xAA4E, 0xAA4F},
6160 {0xAA5A, 0xAA5B},
6161 {0xAAC3, 0xAADA},
6162 {0xAAF7, 0xAB00},
6163 {0xAB07, 0xAB08},
6164 {0xAB0F, 0xAB10},
6165 {0xAB17, 0xAB1F},
6166 {0xAB27, 0xAB27},
6167 {0xAB2F, 0xAB2F},
6168 {0xAB6C, 0xAB6F},
6169 {0xABEE, 0xABEF},
6170 {0xABFA, 0xABFF},
6171 {0xD7A4, 0xD7AF},
6172 {0xD7C7, 0xD7CA},
6173 {0xD7FC, 0xD7FF},
6174 {0xE000, 0xF8FF},
6175 {0xFA6E, 0xFA6F},
6176 {0xFADA, 0xFAFF},
6177 {0xFB07, 0xFB12},
6178 {0xFB18, 0xFB1C},
6179 {0xFB37, 0xFB37},
6180 {0xFB3D, 0xFB3D},
6181 {0xFB3F, 0xFB3F},
6182 {0xFB42, 0xFB42},
6183 {0xFB45, 0xFB45},
6184 {0xFBC3, 0xFBD2},
6185 {0xFD90, 0xFD91},
6186 {0xFDC8, 0xFDCE},
6187 {0xFDD0, 0xFDEF},
6188 {0xFE1A, 0xFE1F},
6189 {0xFE53, 0xFE53},
6190 {0xFE67, 0xFE67},
6191 {0xFE6C, 0xFE6F},
6192 {0xFE75, 0xFE75},
6193 {0xFEFD, 0xFF00},
6194 {0xFFBF, 0xFFC1},
6195 {0xFFC8, 0xFFC9},
6196 {0xFFD0, 0xFFD1},
6197 {0xFFD8, 0xFFD9},
6198 {0xFFDD, 0xFFDF},
6199 {0xFFE7, 0xFFE7},
6200 {0xFFEF, 0xFFFB},
6201 {0xFFFE, 0xFFFF},
6202 {0x1000C, 0x1000C},
6203 {0x10027, 0x10027},
6204 {0x1003B, 0x1003B},
6205 {0x1003E, 0x1003E},
6206 {0x1004E, 0x1004F},
6207 {0x1005E, 0x1007F},
6208 {0x100FB, 0x100FF},
6209 {0x10103, 0x10106},
6210 {0x10134, 0x10136},
6211 {0x1018F, 0x1018F},
6212 {0x1019D, 0x1019F},
6213 {0x101A1, 0x101CF},
6214 {0x101FE, 0x1027F},
6215 {0x1029D, 0x1029F},
6216 {0x102D1, 0x102DF},
6217 {0x102FC, 0x102FF},
6218 {0x10324, 0x1032C},
6219 {0x1034B, 0x1034F},
6220 {0x1037B, 0x1037F},
6221 {0x1039E, 0x1039E},
6222 {0x103C4, 0x103C7},
6223 {0x103D6, 0x103FF},
6224 {0x1049E, 0x1049F},
6225 {0x104AA, 0x104AF},
6226 {0x104D4, 0x104D7},
6227 {0x104FC, 0x104FF},
6228 {0x10528, 0x1052F},
6229 {0x10564, 0x1056E},
6230 {0x1057B, 0x1057B},
6231 {0x1058B, 0x1058B},
6232 {0x10593, 0x10593},
6233 {0x10596, 0x10596},
6234 {0x105A2, 0x105A2},
6235 {0x105B2, 0x105B2},
6236 {0x105BA, 0x105BA},
6237 {0x105BD, 0x105BF},
6238 {0x105F4, 0x105FF},
6239 {0x10737, 0x1073F},
6240 {0x10756, 0x1075F},
6241 {0x10768, 0x1077F},
6242 {0x10786, 0x10786},
6243 {0x107B1, 0x107B1},
6244 {0x107BB, 0x107FF},
6245 {0x10806, 0x10807},
6246 {0x10809, 0x10809},
6247 {0x10836, 0x10836},
6248 {0x10839, 0x1083B},
6249 {0x1083D, 0x1083E},
6250 {0x10856, 0x10856},
6251 {0x1089F, 0x108A6},
6252 {0x108B0, 0x108DF},
6253 {0x108F3, 0x108F3},
6254 {0x108F6, 0x108FA},
6255 {0x1091C, 0x1091E},
6256 {0x1093A, 0x1093E},
6257 {0x10940, 0x1097F},
6258 {0x109B8, 0x109BB},
6259 {0x109D0, 0x109D1},
6260 {0x10A04, 0x10A04},
6261 {0x10A07, 0x10A0B},
6262 {0x10A14, 0x10A14},
6263 {0x10A18, 0x10A18},
6264 {0x10A36, 0x10A37},
6265 {0x10A3B, 0x10A3E},
6266 {0x10A49, 0x10A4F},
6267 {0x10A59, 0x10A5F},
6268 {0x10AA0, 0x10ABF},
6269 {0x10AE7, 0x10AEA},
6270 {0x10AF7, 0x10AFF},
6271 {0x10B36, 0x10B38},
6272 {0x10B56, 0x10B57},
6273 {0x10B73, 0x10B77},
6274 {0x10B92, 0x10B98},
6275 {0x10B9D, 0x10BA8},
6276 {0x10BB0, 0x10BFF},
6277 {0x10C49, 0x10C7F},
6278 {0x10CB3, 0x10CBF},
6279 {0x10CF3, 0x10CF9},
6280 {0x10D28, 0x10D2F},
6281 {0x10D3A, 0x10D3F},
6282 {0x10D66, 0x10D68},
6283 {0x10D86, 0x10D8D},
6284 {0x10D90, 0x10E5F},
6285 {0x10E7F, 0x10E7F},
6286 {0x10EAA, 0x10EAA},
6287 {0x10EAE, 0x10EAF},
6288 {0x10EB2, 0x10EC1},
6289 {0x10EC5, 0x10EFB},
6290 {0x10F28, 0x10F2F},
6291 {0x10F5A, 0x10F6F},
6292 {0x10F8A, 0x10FAF},
6293 {0x10FCC, 0x10FDF},
6294 {0x10FF7, 0x10FFF},
6295 {0x1104E, 0x11051},
6296 {0x11076, 0x1107E},
6297 {0x110BD, 0x110BD},
6298 {0x110C3, 0x110CF},
6299 {0x110E9, 0x110EF},
6300 {0x110FA, 0x110FF},
6301 {0x11135, 0x11135},
6302 {0x11148, 0x1114F},
6303 {0x11177, 0x1117F},
6304 {0x111E0, 0x111E0},
6305 {0x111F5, 0x111FF},
6306 {0x11212, 0x11212},
6307 {0x11242, 0x1127F},
6308 {0x11287, 0x11287},
6309 {0x11289, 0x11289},
6310 {0x1128E, 0x1128E},
6311 {0x1129E, 0x1129E},
6312 {0x112AA, 0x112AF},
6313 {0x112EB, 0x112EF},
6314 {0x112FA, 0x112FF},
6315 {0x11304, 0x11304},
6316 {0x1130D, 0x1130E},
6317 {0x11311, 0x11312},
6318 {0x11329, 0x11329},
6319 {0x11331, 0x11331},
6320 {0x11334, 0x11334},
6321 {0x1133A, 0x1133A},
6322 {0x11345, 0x11346},
6323 {0x11349, 0x1134A},
6324 {0x1134E, 0x1134F},
6325 {0x11351, 0x11356},
6326 {0x11358, 0x1135C},
6327 {0x11364, 0x11365},
6328 {0x1136D, 0x1136F},
6329 {0x11375, 0x1137F},
6330 {0x1138A, 0x1138A},
6331 {0x1138C, 0x1138D},
6332 {0x1138F, 0x1138F},
6333 {0x113B6, 0x113B6},
6334 {0x113C1, 0x113C1},
6335 {0x113C3, 0x113C4},
6336 {0x113C6, 0x113C6},
6337 {0x113CB, 0x113CB},
6338 {0x113D6, 0x113D6},
6339 {0x113D9, 0x113E0},
6340 {0x113E3, 0x113FF},
6341 {0x1145C, 0x1145C},
6342 {0x11462, 0x1147F},
6343 {0x114C8, 0x114CF},
6344 {0x114DA, 0x1157F},
6345 {0x115B6, 0x115B7},
6346 {0x115DE, 0x115FF},
6347 {0x11645, 0x1164F},
6348 {0x1165A, 0x1165F},
6349 {0x1166D, 0x1167F},
6350 {0x116BA, 0x116BF},
6351 {0x116CA, 0x116CF},
6352 {0x116E4, 0x116FF},
6353 {0x1171B, 0x1171C},
6354 {0x1172C, 0x1172F},
6355 {0x11747, 0x117FF},
6356 {0x1183C, 0x1189F},
6357 {0x118F3, 0x118FE},
6358 {0x11907, 0x11908},
6359 {0x1190A, 0x1190B},
6360 {0x11914, 0x11914},
6361 {0x11917, 0x11917},
6362 {0x11936, 0x11936},
6363 {0x11939, 0x1193A},
6364 {0x11947, 0x1194F},
6365 {0x1195A, 0x1199F},
6366 {0x119A8, 0x119A9},
6367 {0x119D8, 0x119D9},
6368 {0x119E5, 0x119FF},
6369 {0x11A48, 0x11A4F},
6370 {0x11AA3, 0x11AAF},
6371 {0x11AF9, 0x11AFF},
6372 {0x11B0A, 0x11BBF},
6373 {0x11BE2, 0x11BEF},
6374 {0x11BFA, 0x11BFF},
6375 {0x11C09, 0x11C09},
6376 {0x11C37, 0x11C37},
6377 {0x11C46, 0x11C4F},
6378 {0x11C6D, 0x11C6F},
6379 {0x11C90, 0x11C91},
6380 {0x11CA8, 0x11CA8},
6381 {0x11CB7, 0x11CFF},
6382 {0x11D07, 0x11D07},
6383 {0x11D0A, 0x11D0A},
6384 {0x11D37, 0x11D39},
6385 {0x11D3B, 0x11D3B},
6386 {0x11D3E, 0x11D3E},
6387 {0x11D48, 0x11D4F},
6388 {0x11D5A, 0x11D5F},
6389 {0x11D66, 0x11D66},
6390 {0x11D69, 0x11D69},
6391 {0x11D8F, 0x11D8F},
6392 {0x11D92, 0x11D92},
6393 {0x11D99, 0x11D9F},
6394 {0x11DAA, 0x11EDF},
6395 {0x11EF9, 0x11EFF},
6396 {0x11F11, 0x11F11},
6397 {0x11F3B, 0x11F3D},
6398 {0x11F5B, 0x11FAF},
6399 {0x11FB1, 0x11FBF},
6400 {0x11FF2, 0x11FFE},
6401 {0x1239A, 0x123FF},
6402 {0x1246F, 0x1246F},
6403 {0x12475, 0x1247F},
6404 {0x12544, 0x12F8F},
6405 {0x12FF3, 0x12FFF},
6406 {0x13430, 0x1343F},
6407 {0x13456, 0x1345F},
6408 {0x143FB, 0x143FF},
6409 {0x14647, 0x160FF},
6410 {0x1613A, 0x167FF},
6411 {0x16A39, 0x16A3F},
6412 {0x16A5F, 0x16A5F},
6413 {0x16A6A, 0x16A6D},
6414 {0x16ABF, 0x16ABF},
6415 {0x16ACA, 0x16ACF},
6416 {0x16AEE, 0x16AEF},
6417 {0x16AF6, 0x16AFF},
6418 {0x16B46, 0x16B4F},
6419 {0x16B5A, 0x16B5A},
6420 {0x16B62, 0x16B62},
6421 {0x16B78, 0x16B7C},
6422 {0x16B90, 0x16D3F},
6423 {0x16D7A, 0x16E3F},
6424 {0x16E9B, 0x16EFF},
6425 {0x16F4B, 0x16F4E},
6426 {0x16F88, 0x16F8E},
6427 {0x16FA0, 0x16FDF},
6428 {0x16FE5, 0x16FEF},
6429 {0x16FF2, 0x16FFF},
6430 {0x187F8, 0x187FF},
6431 {0x18CD6, 0x18CFE},
6432 {0x18D09, 0x1AFEF},
6433 {0x1AFF4, 0x1AFF4},
6434 {0x1AFFC, 0x1AFFC},
6435 {0x1AFFF, 0x1AFFF},
6436 {0x1B123, 0x1B131},
6437 {0x1B133, 0x1B14F},
6438 {0x1B153, 0x1B154},
6439 {0x1B156, 0x1B163},
6440 {0x1B168, 0x1B16F},
6441 {0x1B2FC, 0x1BBFF},
6442 {0x1BC6B, 0x1BC6F},
6443 {0x1BC7D, 0x1BC7F},
6444 {0x1BC89, 0x1BC8F},
6445 {0x1BC9A, 0x1BC9B},
6446 {0x1BCA0, 0x1CBFF},
6447 {0x1CCFA, 0x1CCFF},
6448 {0x1CEB4, 0x1CEFF},
6449 {0x1CF2E, 0x1CF2F},
6450 {0x1CF47, 0x1CF4F},
6451 {0x1CFC4, 0x1CFFF},
6452 {0x1D0F6, 0x1D0FF},
6453 {0x1D127, 0x1D128},
6454 {0x1D173, 0x1D17A},
6455 {0x1D1EB, 0x1D1FF},
6456 {0x1D246, 0x1D2BF},
6457 {0x1D2D4, 0x1D2DF},
6458 {0x1D2F4, 0x1D2FF},
6459 {0x1D357, 0x1D35F},
6460 {0x1D379, 0x1D3FF},
6461 {0x1D455, 0x1D455},
6462 {0x1D49D, 0x1D49D},
6463 {0x1D4A0, 0x1D4A1},
6464 {0x1D4A3, 0x1D4A4},
6465 {0x1D4A7, 0x1D4A8},
6466 {0x1D4AD, 0x1D4AD},
6467 {0x1D4BA, 0x1D4BA},
6468 {0x1D4BC, 0x1D4BC},
6469 {0x1D4C4, 0x1D4C4},
6470 {0x1D506, 0x1D506},
6471 {0x1D50B, 0x1D50C},
6472 {0x1D515, 0x1D515},
6473 {0x1D51D, 0x1D51D},
6474 {0x1D53A, 0x1D53A},
6475 {0x1D53F, 0x1D53F},
6476 {0x1D545, 0x1D545},
6477 {0x1D547, 0x1D549},
6478 {0x1D551, 0x1D551},
6479 {0x1D6A6, 0x1D6A7},
6480 {0x1D7CC, 0x1D7CD},
6481 {0x1DA8C, 0x1DA9A},
6482 {0x1DAA0, 0x1DAA0},
6483 {0x1DAB0, 0x1DEFF},
6484 {0x1DF1F, 0x1DF24},
6485 {0x1DF2B, 0x1DFFF},
6486 {0x1E007, 0x1E007},
6487 {0x1E019, 0x1E01A},
6488 {0x1E022, 0x1E022},
6489 {0x1E025, 0x1E025},
6490 {0x1E02B, 0x1E02F},
6491 {0x1E06E, 0x1E08E},
6492 {0x1E090, 0x1E0FF},
6493 {0x1E12D, 0x1E12F},
6494 {0x1E13E, 0x1E13F},
6495 {0x1E14A, 0x1E14D},
6496 {0x1E150, 0x1E28F},
6497 {0x1E2AF, 0x1E2BF},
6498 {0x1E2FA, 0x1E2FE},
6499 {0x1E300, 0x1E4CF},
6500 {0x1E4FA, 0x1E5CF},
6501 {0x1E5FB, 0x1E5FE},
6502 {0x1E600, 0x1E7DF},
6503 {0x1E7E7, 0x1E7E7},
6504 {0x1E7EC, 0x1E7EC},
6505 {0x1E7EF, 0x1E7EF},
6506 {0x1E7FF, 0x1E7FF},
6507 {0x1E8C5, 0x1E8C6},
6508 {0x1E8D7, 0x1E8FF},
6509 {0x1E94C, 0x1E94F},
6510 {0x1E95A, 0x1E95D},
6511 {0x1E960, 0x1EC70},
6512 {0x1ECB5, 0x1ED00},
6513 {0x1ED3E, 0x1EDFF},
6514 {0x1EE04, 0x1EE04},
6515 {0x1EE20, 0x1EE20},
6516 {0x1EE23, 0x1EE23},
6517 {0x1EE25, 0x1EE26},
6518 {0x1EE28, 0x1EE28},
6519 {0x1EE33, 0x1EE33},
6520 {0x1EE38, 0x1EE38},
6521 {0x1EE3A, 0x1EE3A},
6522 {0x1EE3C, 0x1EE41},
6523 {0x1EE43, 0x1EE46},
6524 {0x1EE48, 0x1EE48},
6525 {0x1EE4A, 0x1EE4A},
6526 {0x1EE4C, 0x1EE4C},
6527 {0x1EE50, 0x1EE50},
6528 {0x1EE53, 0x1EE53},
6529 {0x1EE55, 0x1EE56},
6530 {0x1EE58, 0x1EE58},
6531 {0x1EE5A, 0x1EE5A},
6532 {0x1EE5C, 0x1EE5C},
6533 {0x1EE5E, 0x1EE5E},
6534 {0x1EE60, 0x1EE60},
6535 {0x1EE63, 0x1EE63},
6536 {0x1EE65, 0x1EE66},
6537 {0x1EE6B, 0x1EE6B},
6538 {0x1EE73, 0x1EE73},
6539 {0x1EE78, 0x1EE78},
6540 {0x1EE7D, 0x1EE7D},
6541 {0x1EE7F, 0x1EE7F},
6542 {0x1EE8A, 0x1EE8A},
6543 {0x1EE9C, 0x1EEA0},
6544 {0x1EEA4, 0x1EEA4},
6545 {0x1EEAA, 0x1EEAA},
6546 {0x1EEBC, 0x1EEEF},
6547 {0x1EEF2, 0x1EFFF},
6548 {0x1F02C, 0x1F02F},
6549 {0x1F094, 0x1F09F},
6550 {0x1F0AF, 0x1F0B0},
6551 {0x1F0C0, 0x1F0C0},
6552 {0x1F0D0, 0x1F0D0},
6553 {0x1F0F6, 0x1F0FF},
6554 {0x1F1AE, 0x1F1E5},
6555 {0x1F203, 0x1F20F},
6556 {0x1F23C, 0x1F23F},
6557 {0x1F249, 0x1F24F},
6558 {0x1F252, 0x1F25F},
6559 {0x1F266, 0x1F2FF},
6560 {0x1F6D8, 0x1F6DB},
6561 {0x1F6ED, 0x1F6EF},
6562 {0x1F6FD, 0x1F6FF},
6563 {0x1F777, 0x1F77A},
6564 {0x1F7DA, 0x1F7DF},
6565 {0x1F7EC, 0x1F7EF},
6566 {0x1F7F1, 0x1F7FF},
6567 {0x1F80C, 0x1F80F},
6568 {0x1F848, 0x1F84F},
6569 {0x1F85A, 0x1F85F},
6570 {0x1F888, 0x1F88F},
6571 {0x1F8AE, 0x1F8AF},
6572 {0x1F8BC, 0x1F8BF},
6573 {0x1F8C2, 0x1F8FF},
6574 {0x1FA54, 0x1FA5F},
6575 {0x1FA6E, 0x1FA6F},
6576 {0x1FA7D, 0x1FA7F},
6577 {0x1FA8A, 0x1FA8E},
6578 {0x1FAC7, 0x1FACD},
6579 {0x1FADD, 0x1FADE},
6580 {0x1FAEA, 0x1FAEF},
6581 {0x1FAF9, 0x1FAFF},
6582 {0x1FB93, 0x1FB93},
6583 {0x1FBFA, 0x1FFFF},
6584 {0x2A6E0, 0x2A6FF},
6585 {0x2B73A, 0x2B73F},
6586 {0x2B81E, 0x2B81F},
6587 {0x2CEA2, 0x2CEAF},
6588 {0x2EBE1, 0x2EBEF},
6589 {0x2EE5E, 0x2F7FF},
6590 {0x2FA1E, 0x2FFFF},
6591 {0x3134B, 0x3134F},
6592 {0x323B0, 0xE00FF},
6593 {0xE01F0, 0x10FFFF},
6594 };
6595
6597 enum class gc_property : std::uint8_t {
6598 Lu,
6599 Ll,
6600 Lt,
6601 Lm,
6602 Lo,
6603 Mn,
6604 Mc,
6605 Me,
6606 Nd,
6607 Nl,
6608 No,
6609 Pc,
6610 Pd,
6611 Ps,
6612 Pe,
6613 Pi,
6614 Pf,
6615 Po,
6616 Sm,
6617 Sc,
6618 Sk,
6619 So,
6620 Zs,
6621 Zl,
6622 Zp,
6623 Cc,
6624 Cf,
6625 Co,
6626 Cn,
6627 L,
6628 M,
6629 N,
6630 P,
6631 S,
6632 Z,
6633 C,
6634 count
6635 };
6636
6638 inline constexpr std::span<const code_range> gc_property_ranges[] {
6675 };
6676
6678 constexpr bool is_gc_cp(gc_property prop, char32_t cp)
6679 {
6680 return cp_in_ranges(gc_property_ranges[static_cast<std::size_t>(prop)], cp);
6681 }
6682
6684 struct gc_alias_entry { std::string_view name; gc_property prop; };
6685
6687 inline constexpr gc_alias_entry gc_aliases[] {
6688 {"c", gc_property::C},
6689 {"cc", gc_property::Cc},
6690 {"cf", gc_property::Cf},
6691 {"closepunctuation", gc_property::Pe},
6692 {"cn", gc_property::Cn},
6693 {"co", gc_property::Co},
6694 {"connectorpunctuation", gc_property::Pc},
6695 {"control", gc_property::Cc},
6696 {"currencysymbol", gc_property::Sc},
6697 {"dashpunctuation", gc_property::Pd},
6698 {"decimalnumber", gc_property::Nd},
6699 {"enclosingmark", gc_property::Me},
6700 {"finalpunctuation", gc_property::Pf},
6701 {"format", gc_property::Cf},
6702 {"initialpunctuation", gc_property::Pi},
6703 {"l", gc_property::L},
6704 {"letter", gc_property::L},
6705 {"letternumber", gc_property::Nl},
6706 {"lineseparator", gc_property::Zl},
6707 {"ll", gc_property::Ll},
6708 {"lm", gc_property::Lm},
6709 {"lo", gc_property::Lo},
6710 {"lowercaseletter", gc_property::Ll},
6711 {"lt", gc_property::Lt},
6712 {"lu", gc_property::Lu},
6713 {"m", gc_property::M},
6714 {"mark", gc_property::M},
6715 {"mathsymbol", gc_property::Sm},
6716 {"mc", gc_property::Mc},
6717 {"me", gc_property::Me},
6718 {"mn", gc_property::Mn},
6719 {"modifierletter", gc_property::Lm},
6720 {"modifiersymbol", gc_property::Sk},
6721 {"n", gc_property::N},
6722 {"nd", gc_property::Nd},
6723 {"nl", gc_property::Nl},
6724 {"no", gc_property::No},
6725 {"nonspacingmark", gc_property::Mn},
6726 {"number", gc_property::N},
6727 {"openpunctuation", gc_property::Ps},
6728 {"other", gc_property::C},
6729 {"otherletter", gc_property::Lo},
6730 {"othernumber", gc_property::No},
6731 {"otherpunctuation", gc_property::Po},
6732 {"othersymbol", gc_property::So},
6733 {"p", gc_property::P},
6734 {"paragraphseparator", gc_property::Zp},
6735 {"pc", gc_property::Pc},
6736 {"pd", gc_property::Pd},
6737 {"pe", gc_property::Pe},
6738 {"pf", gc_property::Pf},
6739 {"pi", gc_property::Pi},
6740 {"po", gc_property::Po},
6741 {"privateuse", gc_property::Co},
6742 {"ps", gc_property::Ps},
6743 {"punctuation", gc_property::P},
6744 {"s", gc_property::S},
6745 {"sc", gc_property::Sc},
6746 {"separator", gc_property::Z},
6747 {"sk", gc_property::Sk},
6748 {"sm", gc_property::Sm},
6749 {"so", gc_property::So},
6750 {"spaceseparator", gc_property::Zs},
6751 {"spacingmark", gc_property::Mc},
6752 {"symbol", gc_property::S},
6753 {"titlecaseletter", gc_property::Lt},
6754 {"unassigned", gc_property::Cn},
6755 {"uppercaseletter", gc_property::Lu},
6756 {"z", gc_property::Z},
6757 {"zl", gc_property::Zl},
6758 {"zp", gc_property::Zp},
6759 {"zs", gc_property::Zs},
6760 };
6761
6763 constexpr gc_property resolve_gc(std::string_view loose)
6764 {
6765 for (const gc_alias_entry& a : gc_aliases) {
6766 if (a.name == loose) {
6767 return a.prop;
6768 }
6769 }
6770 return gc_property::count;
6771 }
6772
6773} // namespace real::detail
6774
6775#endif // REAL_UNICODE_PROPERTY_HPP
constexpr code_range gc_Cn_ranges[]
\p{Cn} — 731 ranges, 819533 code points.
constexpr code_range gc_Nd_ranges[]
\p{Nd} — 71 ranges, 760 code points.
constexpr code_range gc_Zs_ranges[]
\p{Zs} — 7 ranges, 17 code points.
constexpr gc_property resolve_gc(std::string_view loose)
Resolve a loose-normalized General_Category name to its property, or count if unknown.
constexpr const char * unicode_property_unidata_version
The Unicode data version these tables were generated from (16.0.0).
constexpr code_range gc_P_ranges[]
\p{P} — 198 ranges, 855 code points.
constexpr bool cp_in_ranges(std::span< const code_range > ranges, char32_t cp)
Binary-searches a sorted, non-overlapping range table for cp. Returns a bool (not a pointer into the ...
constexpr code_range gc_S_ranges[]
\p{S} — 236 ranges, 8514 code points.
constexpr code_range gc_Z_ranges[]
\p{Z} — 8 ranges, 19 code points.
constexpr std::span< const code_range > gc_property_ranges[]
Range table indexed by gc_property (parallel to the enum order).
constexpr code_range gc_Zp_ranges[]
\p{Zp} — 1 ranges, 1 code points.
gc_property
A Unicode General_Category property: the 29 assignable categories then the 7 groups.
constexpr code_range gc_Cc_ranges[]
\p{Cc} — 2 ranges, 65 code points.
constexpr code_range gc_Sk_ranges[]
\p{Sk} — 31 ranges, 125 code points.
constexpr code_range gc_Ps_ranges[]
\p{Ps} — 79 ranges, 79 code points.
constexpr code_range gc_Lm_ranges[]
\p{Lm} — 75 ranges, 404 code points.
constexpr code_range gc_Pc_ranges[]
\p{Pc} — 6 ranges, 10 code points.
constexpr code_range gc_Pd_ranges[]
\p{Pd} — 20 ranges, 27 code points.
constexpr code_range gc_L_ranges[]
\p{L} — 677 ranges, 141028 code points.
constexpr code_range gc_Nl_ranges[]
\p{Nl} — 12 ranges, 236 code points.
constexpr code_range gc_Pe_ranges[]
\p{Pe} — 76 ranges, 77 code points.
constexpr code_range gc_C_ranges[]
\p{C} — 737 ranges, 957236 code points.
constexpr code_range gc_Mc_ranges[]
\p{Mc} — 190 ranges, 468 code points.
constexpr code_range gc_M_ranges[]
\p{M} — 321 ranges, 2501 code points.
constexpr code_range gc_Sc_ranges[]
\p{Sc} — 21 ranges, 63 code points.
constexpr code_range gc_Lt_ranges[]
\p{Lt} — 10 ranges, 31 code points.
constexpr code_range gc_Po_ranges[]
\p{Po} — 193 ranges, 640 code points.
constexpr code_range gc_Pf_ranges[]
\p{Pf} — 10 ranges, 10 code points.
constexpr code_range gc_Sm_ranges[]
\p{Sm} — 65 ranges, 950 code points.
constexpr code_range gc_Lo_ranges[]
\p{Lo} — 528 ranges, 136477 code points.
constexpr code_range gc_So_ranges[]
\p{So} — 187 ranges, 7376 code points.
constexpr code_range gc_N_ranges[]
\p{N} — 144 ranges, 1911 code points.
constexpr gc_alias_entry gc_aliases[]
Short codes (Lu) and long names (Uppercase_Letter), loose-keyed; for the \p{...} parser.
constexpr code_range gc_Co_ranges[]
\p{Co} — 3 ranges, 137468 code points.
constexpr code_range gc_Zl_ranges[]
\p{Zl} — 1 ranges, 1 code points.
constexpr code_range gc_Mn_ranges[]
\p{Mn} — 357 ranges, 2020 code points.
constexpr code_range gc_Cf_ranges[]
\p{Cf} — 21 ranges, 170 code points.
constexpr code_range gc_Pi_ranges[]
\p{Pi} — 11 ranges, 12 code points.
constexpr code_range gc_Ll_ranges[]
\p{Ll} — 662 ranges, 2258 code points.
constexpr code_range gc_No_ranges[]
\p{No} — 72 ranges, 915 code points.
constexpr bool is_gc_cp(gc_property prop, char32_t cp)
Whether cp is in the General_Category property prop (== the UCD).
constexpr code_range gc_Lu_ranges[]
\p{Lu} — 651 ranges, 1858 code points.
constexpr code_range gc_Me_ranges[]
\p{Me} — 5 ranges, 13 code points.
Compiled form of a pattern and the public flags / error types.
An inclusive code-point range [lo, hi]. Shared by character classes (ast.hpp) and the generated Unico...
Definition program.hpp:168
A loose-normalized (lowercase, no _/-/space) General_Category name and its property.
std::string_view name
gc_property prop
Unicode \w / \d / \s property ranges and their lookups.
REAL's version macros and the C++20 language-standard guard.