YAP 7.1.0
chartypes.yap
1/*:- module('$char_type',[
2 op(1150, fx, block)
3 %dif/2,
4 %when/2,
5 %block/1,
6 %wait/1,
7 %frozen/2
8 ]).
9*/
10/**
11 @defgroup CharacterCodes Character Encoding and Manipulation.
12 @ingroup InputOutput
13 @{
14
15The Prolog library includes a set of built-in predicates designed to
16support manipulation of sequences of text, represented either as
17lists, atoms or strings.
18
19The char_type family of predicates support manipulation of individual characters, represented either as numbers (codes) or atoms (chars).
20
21YAP supports UNICODE through the library utf8proc for compatibility
22across operating systems. The implementation extends the original
23(ASCII-based) character classification used by early Prologs, but
24supports UNICODE.As usual, YAP tried to follow SWI-Prolog as much as
25possible:
26
27 + char_type/2 and code_type/2 support all documented SWI-Prolog flags,
28but are strict in argument checking.
29
30 + letters with no case are considered as lower-case. Hence, a
31 variable can only start with an underscore or a unicode point in
32 category LU.
33
34 + number letters are consideed numbers.
35
36 + connectors, dashes, are considered solo characters.
37
38 + YAP does currently distinguish opening and closing quotes.
39
40 + Symbols are processed as Prolog symbols, exception are modifiers
41 that are handled as lower-case letters.
42
43 Predicates are:
44
45 + @ref char_type/2
46 + @ref code_type/2
47
48
49
50*/
51
52/** @predicate char_type(?_Char_ , ?Type)
53
54The character _Char_ has type _Type_. The types included here are
55based on SWI-Prolog's documentation, and they include several types
56from the C-library. It it is possible for a character to have
57different types.
58
59 + alnum
60 Char is a letter (upper- or lowercase) or digit.
61
62 +alpha
63 Char is a letter (upper- or lowercase).
64
65 + csym
66 Char is a letter (upper- or lowercase), digit or the underscore (_). These are valid C and Prolog symbol characters.
67
68 + csymf
69Char is a letter (upper- or lowercase) or the underscore (_). These are valid first characters for C and Prolog symbols.
70
71 + ascii
72 Char is a 7-bit ASCII character (0..127).
73
74 + white
75 Char is a space or tab, i.e. white space inside a line.
76
77 + cntrl
78 Char is an ASCII control character (0..31).
79
80 + digit
81 Char is a digit.
82
83 + digit(Weight)
84 Char is a digit with value Weight. I.e. char_type(X, digit(6) yields X = '6'. Useful for parsing numbers.
85
86+ xdigit(Weight)
87 Char is a hexadecimal digit with value Weight. I.e. char_type(a, xdigit(X) yields X = '10'. Useful for parsing numbers.
88
89 + graph
90 Char produces a visible mark on a page when printed. Note that the space is not included!
91
92 + lower
93 Char is a lowercase letter.
94
95 + lower(Upper)
96 Char is a lowercase version of Upper. Only true if Char is lowercase and Upper uppercase.
97
98 + to_lower(Upper)
99 Char is a lowercase version of Upper. For non-letters, or letter without case, Char and Lower are the same. See also upcase_atom/2 and downcase_atom/2.
100
101 + upper
102 Char is an uppercase letter.
103
104 + upper(Lower)
105Char is an uppercase version of Lower. Only true if Char is uppercase and Lower lowercase.
106
107 + to_upper(Lower)
108 Char is an uppercase version of Lower. For non-letters, or letter without case, Char and Lower are the same. See also upcase_atom/2 and downcase_atom/2.
109
110 + punct
111 Char is a punctuation character. This is a graph character that is not a letter or digit.
112
113 + space
114 Char is some form of layout character (tab, vertical tab, newline, etc.).
115
116 + end_of_file
117 Char is -1.
118
119 + end_of_line
120 Char ends a line (ASCII: 10..13).
121
122 + newline
123 Char is a newline character (10).
124
125 + period
126 Char counts as the end of a sentence (.,!,?).
127
128 + quote
129 Char is a quote character (", ', `).
130
131 + paren(Close)
132 Char is an open parenthesis and Close is the corresponding close parenthesis.
133
134 + prolog_var_start
135 Char can start a Prolog variable name.
136
137 + prolog_atom_start
138 Char can start a unquoted Prolog atom that is not a symbol.
139
140 + prolog_identifier_continue
141 Char can continue a Prolog variable name or atom.
142
143 + prolog_prolog_symbol
144 Char is a Prolog symbol character. Sequences of Prolog symbol characters glue together to form an unquoted atom. Examples are =.., \=, etc.
145*/
146
147:- discontiguous digit_weight/2, digit_weight/3.
148
149:char_type( CH, TYPE) :-
150 (nonvar( CH )
151 ->
152 nonvar
153 ;
154 arg(1,TYPE, A),
155 atomic(A)
156 ->
157 atomic
158 ;
159 between(0,0x10FFFF,I),
160 atom_codes(CH, [I])
161 ),
162 p_char_type( CH, TYPE).
163
164
165p_char_type( ALNUM, alnum) :-
166 char_type_alnum( ALNUM ).
167p_char_type( ALPHA, alpha) :-
168 char_type_alpha( ALPHA).
169p_char_type( CSYM, csym) :-
170 char_type_csym( CSYM ).
171p_char_type( CSYMF, csymf) :-
172 char_type_csymf( CSYMF).
173p_char_type( ASCII, ascii ) :-
174 char_type_ascii( ASCII ).
175p_char_type( WHITE, white) :-
176 char_type_white( WHITE ).
177p_char_type( CNTRL , cntrl) :-
178 char_type_cntrl( CNTRL ).
179p_char_type( DIGIT , digit) :-
180 char_type_digit( DIGIT ).
181p_char_type( DIGIT, digit(Weight) ) :-
182 char_type_digit( DIGIT ),
183 digit_weight( DIGIT, Weight ).
184p_char_type( XDIGIT, xdigit(Weight) ) :-
185 char_type_digit( XDIGIT ),
186 xdigit_weight( XDIGIT, Weight ).
187p_char_type( GRAPH , graph) :-
188 char_type_graph( GRAPH ).
189p_char_type( LOWER , lower) :-
190 char_type_lower( LOWER ).
191p_char_type( LOWER, lower( Upper)) :-
192 toupper( LOWER, Upper),
193 char_type_lower( LOWER ).
194p_char_type( LOWER, to_lower( Upper)) :-
195 toupper( LOWER, Upper).
196p_char_type( UPPER, upper ) :-
197 char_type_upper( UPPER ).
198p_char_type( UPPER , upper( Lower)) :-
199 char_type_upper( UPPER ),
200 tolower( UPPER, Lower).
201p_char_type( UPPER, to_upper( Lower) ) :-
202 tolower( UPPER, Lower).
203p_char_type( PUNCT , punct) :-
204 char_type_punct( PUNCT ).
205p_char_type( SPACE , space) :-
206 char_type_space( SPACE ).
207p_char_type( END_OF_FILE , end_of_file) :-
208 char_type_end_of_file( END_OF_FILE ).
209p_char_type( END_OF_LINE , end_of_line) :-
210 char_type_end_of_line( END_OF_LINE ).
211p_char_type( NEWLINE , newline) :-
212 char_type_newline( NEWLINE ).
213p_char_type( PERIOD , period) :-
214 char_type_period( PERIOD ).
215p_char_type( QUOTE , quote) :-
216 char_type_quote( QUOTE ).
217p_char_type( Parent_Open, paren( PAREN_CLOSE) ) :-
218 paren_paren(Parent_Open, PAREN_CLOSE).
219p_char_type( PROLOG_VAR_START , prolog_var_start) :-
220 char_type_prolog_var_start( PROLOG_VAR_START ).
221p_char_type( PROLOG_ATOM_START , prolog_atom_start) :-
222 char_type_prolog_atom_start( PROLOG_ATOM_START ).
223p_char_type( PROLOG_IDENTIFIER_CONTINUE , prolog_identifier_continue) :-
224 char_type_prolog_identifier_continue( PROLOG_IDENTIFIER_CONTINUE ).
225p_char_type( PROLOG_PROLOG_SYMBOL , prolog_prolog_symbol) :-
226 char_type_prolog_prolog_symbol( PROLOG_PROLOG_SYMBOL ).
227
228char_type_prolog_prolog_symbol:code_type(CH, TYPE) :-
229 (nonvar( CH )
230 ->
231 nonvar
232 ;
233 arg(1,TYPE, A),
234 atomic(A)
235 ->
236 atomic
237 ;
238 between(0,0x10FFFF,CH)
239 ),
240 p_code_type( CH, TYPE).
241
242p_code_type( ALNUM, alnum) :-
243 code_type_alnum( ALNUM ).
244p_code_type( ALPHA, alpha) :-
245 code_type_alpha( ALPHA).
246p_code_type( CSYM, csym) :-
247 code_type_csym( CSYM ).
248p_code_type( CSYMF, csymf) :-
249 code_type_csymf( CSYMF).
250p_code_type( ASCII, ascii ) :-
251 code_type_ascii( ASCII ).
252p_code_type( WHITE, white) :-
253 code_type_white( WHITE ).
254p_code_type( CNTRL , cntrl) :-
255 code_type_cntrl( CNTRL ).
256p_code_type( DIGIT , digit) :-
257 code_type_digit( DIGIT ).
258p_code_type( DIGIT, digit(Weight) ) :-
259 code_type_digit( DIGIT ),
260 digit_weight( DIGIT, Weight ).
261p_code_type( XDIGIT, xdigit(Weight) ) :-
262 code_type_digit( XDIGIT ),
263 xdigit_weight( XDIGIT, Weight ).
264p_code_type( GRAPH , graph) :-
265 code_type_graph( GRAPH ).
266p_code_type( LOWER , lower) :-
267 code_type_lower( LOWER ).
268p_code_type( LOWER, lower( Upper)) :-
269 toupper( LOWER, Upper),
270 code_type_lower( LOWER ).
271p_code_type( LOWER, to_lower( Upper)) :-
272 toupper( LOWER, Upper).
273p_code_type( UPPER, upper ) :-
274 code_type_upper( UPPER ).
275p_code_type( UPPER , upper( Lower)) :-
276 tolower( UPPER, Lower).
277p_code_type( UPPER, to_upper( Lower) ) :-
278 tolower( UPPER, Lower),
279 char_type_upper( UPPER).
280p_code_type( PUNCT , punct) :-
281 code_type_punct( PUNCT ).
282p_code_type( SPACE , space) :-
283 code_type_space( SPACE ).
284p_code_type( END_OF_FILE , end_of_file) :-
285 code_type_end_of_file( END_OF_FILE ).
286p_code_type( END_OF_LINE , end_of_line) :-
287 code_type_end_of_line( END_OF_LINE ).
288p_code_type( NEWLINE , newline) :-
289 code_type_newline( NEWLINE ).
290p_code_type( PERIOD , period) :-
291 code_type_period( PERIOD ).
292p_code_type( QUOTE , quote) :-
293 code_type_quote( QUOTE ).
294p_code_type( Parent_Open, paren( PAREN_CLOSE) ) :-
295 paren_paren(Parent_Open, PAREN_CLOSE).
296p_code_type( PROLOG_VAR_START , prolog_var_start) :-
297 code_type_prolog_var_start( PROLOG_VAR_START ).
298p_code_type( PROLOG_ATOM_START , prolog_atom_start) :-
299 code_type_prolog_atom_start( PROLOG_ATOM_START ).
300p_code_type( PROLOG_IDENTIFIER_CONTINUE , prolog_identifier_continue) :-
301 code_type_prolog_identifier_continue( PROLOG_IDENTIFIER_CONTINUE ).
302p_code_type( PROLOG_PROLOG_SYMBOL , prolog_prolog_symbol) :-
303 code_type_prolog_prolog_symbol( PROLOG_PROLOG_SYMBOL ).
304
305
306/* numeric code sequences, obtained from
307http://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedNumericValues.txt
308
309by using:
310
311 grep '[ \t]\#' DerivedNumericValues.txt | awk '{ print "ch( 0x" $1 ", "$6 ")." }'
312
313*/
314
315digit_weight( 0x0F33, -1/2).
316digit_weight( 0x0030, 0).
317digit_weight( 0x0660, 0).
318digit_weight( 0x06F0, 0).
319digit_weight( 0x07C0, 0).
320digit_weight( 0x0966, 0).
321digit_weight( 0x09E6, 0).
322digit_weight( 0x0A66, 0).
323digit_weight( 0x0AE6, 0).
324digit_weight( 0x0B66, 0).
325digit_weight( 0x0BE6, 0).
326digit_weight( 0x0C66, 0).
327digit_weight( 0x0C78, 0).
328digit_weight( 0x0CE6, 0).
329digit_weight( 0x0D66, 0).
330digit_weight( 0x0DE6, 0).
331digit_weight( 0x0E50, 0).
332digit_weight( 0x0ED0, 0).
333digit_weight( 0x0F20, 0).
334digit_weight( 0x1040, 0).
335digit_weight( 0x1090, 0).
336digit_weight( 0x17E0, 0).
337digit_weight( 0x17F0, 0).
338digit_weight( 0x1810, 0).
339digit_weight( 0x1946, 0).
340digit_weight( 0x19D0, 0).
341digit_weight( 0x1A80, 0).
342digit_weight( 0x1A90, 0).
343digit_weight( 0x1B50, 0).
344digit_weight( 0x1BB0, 0).
345digit_weight( 0x1C40, 0).
346digit_weight( 0x1C50, 0).
347digit_weight( 0x2070, 0).
348digit_weight( 0x2080, 0).
349digit_weight( 0x2189, 0).
350digit_weight( 0x24EA, 0).
351digit_weight( 0x24FF, 0).
352digit_weight( 0x3007, 0).
353digit_weight( 0x96F6, 0).
354digit_weight( 0xA620, 0).
355digit_weight( 0xA6EF, 0).
356digit_weight( 0xA8D0, 0).
357digit_weight( 0xA900, 0).
358digit_weight( 0xA9D0, 0).
359digit_weight( 0xA9F0, 0).
360digit_weight( 0xAA50, 0).
361digit_weight( 0xABF0, 0).
362digit_weight( 0xF9B2, 0).
363digit_weight( 0xFF10, 0).
364digit_weight( 0x1018A, 0).
365digit_weight( 0x104A0, 0).
366digit_weight( 0x11066, 0).
367digit_weight( 0x110F0, 0).
368digit_weight( 0x11136, 0).
369digit_weight( 0x111D0, 0).
370digit_weight( 0x112F0, 0).
371digit_weight( 0x114D0, 0).
372digit_weight( 0x11650, 0).
373digit_weight( 0x116C0, 0).
374digit_weight( 0x11730, 0).
375digit_weight( 0x118E0, 0).
376digit_weight( 0x16A60, 0).
377digit_weight( 0x16B50, 0).
378digit_weight( 0x1D7CE, 0).
379digit_weight( 0x1D7D8, 0).
380digit_weight( 0x1D7E2, 0).
381digit_weight( 0x1D7EC, 0).
382vdigit_weight( 0x1D7F6, 0).
383digit_weight( 0x1F100, 0x1F101, 0).
384digit_weight( 0x1F10B, 0x1F10C, 0).
385digit_weight( 0x09F4, 1/16).
386digit_weight( 0x0B75, 1/16).
387digit_weight( 0xA833, 1/16).
388digit_weight( 0x109F6, 1/12).
389digit_weight( 0x2152, 1/10).
390digit_weight( 0x2151, 1/9).
391digit_weight( 0x09F5, 1/8).
392digit_weight( 0x0B76, 1/8).
393digit_weight( 0x215B, 1/8).
394digit_weight( 0xA834, 1/8).
395digit_weight( 0x1245F, 1/8).
396digit_weight( 0x2150, 1/7).
397digit_weight( 0x2159, 1/6).
398digit_weight( 0x109F7, 1/6).
399digit_weight( 0x12461, 1/6).
400digit_weight( 0x09F6, 3/16).
401digit_weight( 0x0B77, 3/16).
402digit_weight( 0xA835, 3/16).
403digit_weight( 0x2155, 1/5).
404digit_weight( 0x00BC, 1/4).
405digit_weight( 0x09F7, 1/4).
406digit_weight( 0x0B72, 1/4).
407digit_weight( 0x0D73, 1/4).
408digit_weight( 0xA830, 1/4).
409digit_weight( 0x10140, 1/4).
410digit_weight( 0x1018B, 1/4).
411digit_weight( 0x109F8, 1/4).
412digit_weight( 0x10E7C, 1/4).
413digit_weight( 0x12460, 1/4).
414digit_weight( 0x12462, 0x12463, 1/4).
415digit_weight( 0x2153, 1/3).
416digit_weight( 0x109F9, 1/3).
417digit_weight( 0x10E7D, 1/3).
418digit_weight( 0x1245A, 1/3).
419digit_weight( 0x1245D, 1/3).
420digit_weight( 0x12465, 1/3).
421digit_weight( 0x215C, 3/8).
422digit_weight( 0x2156, 2/5).
423digit_weight( 0x109FA, 5/12).
424digit_weight( 0x00BD, 1/2).
425digit_weight( 0x0B73, 1/2).
426digit_weight( 0x0D74, 1/2).
427digit_weight( 0x0F2A, 1/2).
428digit_weight( 0x2CFD, 1/2).
429digit_weight( 0xA831, 1/2).
430digit_weight( 0x10141, 1/2).
431digit_weight( 0x10175, 0x10176, 1/2).
432digit_weight( 0x109BD, 1/2).
433digit_weight( 0x109FB, 1/2).
434digit_weight( 0x10E7B, 1/2).
435digit_weight( 0x12464, 1/2).
436digit_weight( 0x109FC, 7/12).
437digit_weight( 0x2157, 3/5).
438digit_weight( 0x215D, 5/8).
439digit_weight( 0x2154, 2/3).
440digit_weight( 0x10177, 2/3).
441digit_weight( 0x109FD, 2/3).
442digit_weight( 0x10E7E, 2/3).
443digit_weight( 0x1245B, 2/3).
444digit_weight( 0x1245E, 2/3).
445digit_weight( 0x12466, 2/3).
446digit_weight( 0x00BE, 3/4).
447digit_weight( 0x09F8, 3/4).
448digit_weight( 0x0B74, 3/4).
449digit_weight( 0x0D75, 3/4).
450digit_weight( 0xA832, 3/4).
451digit_weight( 0x10178, 3/4).
452digit_weight( 0x109FE, 3/4).
453digit_weight( 0x2158, 4/5).
454digit_weight( 0x215A, 5/6).
455digit_weight( 0x109FF, 5/6).
456digit_weight( 0x1245C, 5/6).
457digit_weight( 0x215E, 7/8).
458digit_weight( 0x109BC, 11/12).
459digit_weight( 0x0031, 1).
460digit_weight( 0x00B9, 1).
461digit_weight( 0x0661, 1).
462digit_weight( 0x06F1, 1).
463digit_weight( 0x07C1, 1).
464digit_weight( 0x0967, 1).
465digit_weight( 0x09E7, 1).
466digit_weight( 0x0A67, 1).
467digit_weight( 0x0AE7, 1).
468digit_weight( 0x0B67, 1).
469digit_weight( 0x0BE7, 1).
470digit_weight( 0x0C67, 1).
471digit_weight( 0x0C79, 1).
472digit_weight( 0x0C7C, 1).
473digit_weight( 0x0CE7, 1).
474digit_weight( 0x0D67, 1).
475digit_weight( 0x0DE7, 1).
476digit_weight( 0x0E51, 1).
477digit_weight( 0x0ED1, 1).
478digit_weight( 0x0F21, 1).
479digit_weight( 0x1041, 1).
480digit_weight( 0x1091, 1).
481digit_weight( 0x1369, 1).
482digit_weight( 0x17E1, 1).
483digit_weight( 0x17F1, 1).
484digit_weight( 0x1811, 1).
485digit_weight( 0x1947, 1).
486digit_weight( 0x19D1, 1).
487digit_weight( 0x19DA, 1).
488digit_weight( 0x1A81, 1).
489digit_weight( 0x1A91, 1).
490digit_weight( 0x1B51, 1).
491digit_weight( 0x1BB1, 1).
492digit_weight( 0x1C41, 1).
493digit_weight( 0x1C51, 1).
494digit_weight( 0x2081, 1).
495digit_weight( 0x215F, 1).
496digit_weight( 0x2160, 1).
497digit_weight( 0x2170, 1).
498digit_weight( 0x2460, 1).
499digit_weight( 0x2474, 1).
500digit_weight( 0x2488, 1).
501digit_weight( 0x24F5, 1).
502digit_weight( 0x2776, 1).
503digit_weight( 0x2780, 1).
504digit_weight( 0x278A, 1).
505digit_weight( 0x3021, 1).
506digit_weight( 0x3192, 1).
507digit_weight( 0x3220, 1).
508digit_weight( 0x3280, 1).
509digit_weight( 0x4E00, 1).
510digit_weight( 0x58F1, 1).
511digit_weight( 0x58F9, 1).
512digit_weight( 0x5E7A, 1).
513digit_weight( 0x5F0C, 1).
514digit_weight( 0xA621, 1).
515digit_weight( 0xA6E6, 1).
516digit_weight( 0xA8D1, 1).
517digit_weight( 0xA901, 1).
518digit_weight( 0xA9D1, 1).
519digit_weight( 0xA9F1, 1).
520digit_weight( 0xAA51, 1).
521digit_weight( 0xABF1, 1).
522digit_weight( 0xFF11, 1).
523digit_weight( 0x10107, 1).
524digit_weight( 0x10142, 1).
525digit_weight( 0x10158, 0x1015A, 1).
526digit_weight( 0x102E1, 1).
527digit_weight( 0x10320, 1).
528digit_weight( 0x103D1, 1).
529digit_weight( 0x104A1, 1).
530digit_weight( 0x10858, 1).
531digit_weight( 0x10879, 1).
532digit_weight( 0x108A7, 1).
533digit_weight( 0x108FB, 1).
534digit_weight( 0x10916, 1).
535digit_weight( 0x109C0, 1).
536digit_weight( 0x10A40, 1).
537digit_weight( 0x10A7D, 1).
538digit_weight( 0x10A9D, 1).
539digit_weight( 0x10AEB, 1).
540digit_weight( 0x10B58, 1).
541digit_weight( 0x10B78, 1).
542digit_weight( 0x10BA9, 1).
543digit_weight( 0x10CFA, 1).
544digit_weight( 0x10E60, 1).
545digit_weight( 0x11052, 1).
546digit_weight( 0x11067, 1).
547digit_weight( 0x110F1, 1).
548digit_weight( 0x11137, 1).
549digit_weight( 0x111D1, 1).
550digit_weight( 0x111E1, 1).
551digit_weight( 0x112F1, 1).
552digit_weight( 0x114D1, 1).
553digit_weight( 0x11651, 1).
554digit_weight( 0x116C1, 1).
555digit_weight( 0x11731, 1).
556digit_weight( 0x118E1, 1).
557digit_weight( 0x12415, 1).
558digit_weight( 0x1241E, 1).
559digit_weight( 0x1242C, 1).
560digit_weight( 0x12434, 1).
561digit_weight( 0x1244F, 1).
562digit_weight( 0x12458, 1).
563digit_weight( 0x16A61, 1).
564digit_weight( 0x16B51, 1).
565digit_weight( 0x1D360, 1).
566digit_weight( 0x1D7CF, 1).
567digit_weight( 0x1D7D9, 1).
568digit_weight( 0x1D7E3, 1).
569digit_weight( 0x1D7ED, 1).
570digit_weight( 0x1D7F7, 1).
571digit_weight( 0x1E8C7, 1).
572digit_weight( 0x1F102, 1).
573digit_weight( 0x2092A, 1).
574digit_weight( 0x0F2B, 3/2).
575digit_weight( 0x0032, 2).
576digit_weight( 0x00B2, 2).
577digit_weight( 0x0662, 2).
578digit_weight( 0x06F2, 2).
579digit_weight( 0x07C2, 2).
580digit_weight( 0x0968, 2).
581digit_weight( 0x09E8, 2).
582digit_weight( 0x0A68, 2).
583digit_weight( 0x0AE8, 2).
584digit_weight( 0x0B68, 2).
585digit_weight( 0x0BE8, 2).
586digit_weight( 0x0C68, 2).
587digit_weight( 0x0C7A, 2).
588digit_weight( 0x0C7D, 2).
589digit_weight( 0x0CE8, 2).
590digit_weight( 0x0D68, 2).
591digit_weight( 0x0DE8, 2).
592digit_weight( 0x0E52, 2).
593digit_weight( 0x0ED2, 2).
594digit_weight( 0x0F22, 2).
595digit_weight( 0x1042, 2).
596digit_weight( 0x1092, 2).
597digit_weight( 0x136A, 2).
598digit_weight( 0x17E2, 2).
599digit_weight( 0x17F2, 2).
600digit_weight( 0x1812, 2).
601digit_weight( 0x1948, 2).
602digit_weight( 0x19D2, 2).
603digit_weight( 0x1A82, 2).
604digit_weight( 0x1A92, 2).
605digit_weight( 0x1B52, 2).
606digit_weight( 0x1BB2, 2).
607digit_weight( 0x1C42, 2).
608digit_weight( 0x1C52, 2).
609digit_weight( 0x2082, 2).
610digit_weight( 0x2161, 2).
611digit_weight( 0x2171, 2).
612digit_weight( 0x2461, 2).
613digit_weight( 0x2475, 2).
614digit_weight( 0x2489, 2).
615digit_weight( 0x24F6, 2).
616digit_weight( 0x2777, 2).
617digit_weight( 0x2781, 2).
618digit_weight( 0x278B, 2).
619digit_weight( 0x3022, 2).
620digit_weight( 0x3193, 2).
621digit_weight( 0x3221, 2).
622digit_weight( 0x3281, 2).
623digit_weight( 0x3483, 2).
624digit_weight( 0x4E8C, 2).
625digit_weight( 0x5169, 2).
626digit_weight( 0x5F0D, 2).
627digit_weight( 0x5F10, 2).
628digit_weight( 0x8CAE, 2).
629digit_weight( 0x8CB3, 2).
630digit_weight( 0x8D30, 2).
631digit_weight( 0xA622, 2).
632digit_weight( 0xA6E7, 2).
633digit_weight( 0xA8D2, 2).
634digit_weight( 0xA902, 2).
635digit_weight( 0xA9D2, 2).
636digit_weight( 0xA9F2, 2).
637digit_weight( 0xAA52, 2).
638digit_weight( 0xABF2, 2).
639digit_weight( 0xF978, 2).
640digit_weight( 0xFF12, 2).
641digit_weight( 0x10108, 2).
642digit_weight( 0x1015B, 0x1015E, 2).
643digit_weight( 0x102E2, 2).
644digit_weight( 0x103D2, 2).
645digit_weight( 0x104A2, 2).
646digit_weight( 0x10859, 2).
647digit_weight( 0x1087A, 2).
648digit_weight( 0x108A8, 2).
649digit_weight( 0x1091A, 2).
650digit_weight( 0x109C1, 2).
651digit_weight( 0x10A41, 2).
652digit_weight( 0x10B59, 2).
653digit_weight( 0x10B79, 2).
654digit_weight( 0x10BAA, 2).
655digit_weight( 0x10E61, 2).
656digit_weight( 0x11053, 2).
657digit_weight( 0x11068, 2).
658digit_weight( 0x110F2, 2).
659digit_weight( 0x11138, 2).
660digit_weight( 0x111D2, 2).
661digit_weight( 0x111E2, 2).
662digit_weight( 0x112F2, 2).
663digit_weight( 0x114D2, 2).
664digit_weight( 0x11652, 2).
665digit_weight( 0x116C2, 2).
666digit_weight( 0x11732, 2).
667digit_weight( 0x118E2, 2).
668digit_weight( 0x12400, 2).
669digit_weight( 0x12416, 2).
670digit_weight( 0x1241F, 2).
671digit_weight( 0x12423, 2).
672digit_weight( 0x1242D, 2).
673digit_weight( 0x12435, 2).
674digit_weight( 0x1244A, 2).
675digit_weight( 0x12450, 2).
676digit_weight( 0x12456, 2).
677digit_weight( 0x12459, 2).
678digit_weight( 0x16A62, 2).
679digit_weight( 0x16B52, 2).
680digit_weight( 0x1D361, 2).
681digit_weight( 0x1D7D0, 2).
682digit_weight( 0x1D7DA, 2).
683digit_weight( 0x1D7E4, 2).
684digit_weight( 0x1D7EE, 2).
685digit_weight( 0x1D7F8, 2).
686digit_weight( 0x1E8C8, 2).
687digit_weight( 0x1F103, 2).
688digit_weight( 0x22390, 2).
689digit_weight( 0x0F2C, 5/2).
690digit_weight( 0x0033, 3).
691digit_weight( 0x00B3, 3).
692digit_weight( 0x0663, 3).
693digit_weight( 0x06F3, 3).
694digit_weight( 0x07C3, 3).
695digit_weight( 0x0969, 3).
696digit_weight( 0x09E9, 3).
697digit_weight( 0x0A69, 3).
698digit_weight( 0x0AE9, 3).
699digit_weight( 0x0B69, 3).
700digit_weight( 0x0BE9, 3).
701digit_weight( 0x0C69, 3).
702digit_weight( 0x0C7B, 3).
703digit_weight( 0x0C7E, 3).
704digit_weight( 0x0CE9, 3).
705digit_weight( 0x0D69, 3).
706digit_weight( 0x0DE9, 3).
707digit_weight( 0x0E53, 3).
708digit_weight( 0x0ED3, 3).
709digit_weight( 0x0F23, 3).
710digit_weight( 0x1043, 3).
711digit_weight( 0x1093, 3).
712digit_weight( 0x136B, 3).
713digit_weight( 0x17E3, 3).
714digit_weight( 0x17F3, 3).
715digit_weight( 0x1813, 3).
716digit_weight( 0x1949, 3).
717digit_weight( 0x19D3, 3).
718digit_weight( 0x1A83, 3).
719digit_weight( 0x1A93, 3).
720digit_weight( 0x1B53, 3).
721digit_weight( 0x1BB3, 3).
722digit_weight( 0x1C43, 3).
723digit_weight( 0x1C53, 3).
724digit_weight( 0x2083, 3).
725digit_weight( 0x2162, 3).
726digit_weight( 0x2172, 3).
727digit_weight( 0x2462, 3).
728digit_weight( 0x2476, 3).
729digit_weight( 0x248A, 3).
730digit_weight( 0x24F7, 3).
731digit_weight( 0x2778, 3).
732digit_weight( 0x2782, 3).
733digit_weight( 0x278C, 3).
734digit_weight( 0x3023, 3).
735digit_weight( 0x3194, 3).
736digit_weight( 0x3222, 3).
737digit_weight( 0x3282, 3).
738digit_weight( 0x4E09, 3).
739digit_weight( 0x4EE8, 3).
740digit_weight( 0x53C1, 0x53C4, 3).
741digit_weight( 0x5F0E, 3).
742digit_weight( 0xA623, 3).
743digit_weight( 0xA6E8, 3).
744digit_weight( 0xA8D3, 3).
745digit_weight( 0xA903, 3).
746digit_weight( 0xA9D3, 3).
747digit_weight( 0xA9F3, 3).
748digit_weight( 0xAA53, 3).
749digit_weight( 0xABF3, 3).
750digit_weight( 0xF96B, 3).
751digit_weight( 0xFF13, 3).
752digit_weight( 0x10109, 3).
753digit_weight( 0x102E3, 3).
754digit_weight( 0x104A3, 3).
755digit_weight( 0x1085A, 3).
756digit_weight( 0x1087B, 3).
757digit_weight( 0x108A9, 3).
758digit_weight( 0x1091B, 3).
759digit_weight( 0x109C2, 3).
760digit_weight( 0x10A42, 3).
761digit_weight( 0x10B5A, 3).
762digit_weight( 0x10B7A, 3).
763digit_weight( 0x10BAB, 3).
764digit_weight( 0x10E62, 3).
765digit_weight( 0x11054, 3).
766digit_weight( 0x11069, 3).
767digit_weight( 0x110F3, 3).
768digit_weight( 0x11139, 3).
769digit_weight( 0x111D3, 3).
770digit_weight( 0x111E3, 3).
771digit_weight( 0x112F3, 3).
772digit_weight( 0x114D3, 3).
773digit_weight( 0x11653, 3).
774digit_weight( 0x116C3, 3).
775digit_weight( 0x11733, 3).
776digit_weight( 0x118E3, 3).
777digit_weight( 0x12401, 3).
778digit_weight( 0x12408, 3).
779digit_weight( 0x12417, 3).
780digit_weight( 0x12420, 3).
781digit_weight( 0x12424, 0x12425, 3).
782digit_weight( 0x1242E, 0x1242F, 3).
783digit_weight( 0x12436, 0x12437, 3).
784digit_weight( 0x1243A, 0x1243B, 3).
785digit_weight( 0x1244B, 3).
786digit_weight( 0x12451, 3).
787digit_weight( 0x12457, 3).
788digit_weight( 0x16A63, 3).
789digit_weight( 0x16B53, 3).
790digit_weight( 0x1D362, 3).
791digit_weight( 0x1D7D1, 3).
792digit_weight( 0x1D7DB, 3).
793digit_weight( 0x1D7E5, 3).
794digit_weight( 0x1D7EF, 3).
795digit_weight( 0x1D7F9, 3).
796digit_weight( 0x1E8C9, 3).
797digit_weight( 0x1F104, 3).
798digit_weight( 0x20AFD, 3).
799digit_weight( 0x20B19, 3).
800digit_weight( 0x22998, 3).
801digit_weight( 0x23B1B, 3).
802digit_weight( 0x0F2D, 7/2).
803digit_weight( 0x0034, 4).
804digit_weight( 0x0664, 4).
805digit_weight( 0x06F4, 4).
806digit_weight( 0x07C4, 4).
807digit_weight( 0x096A, 4).
808digit_weight( 0x09EA, 4).
809digit_weight( 0x0A6A, 4).
810digit_weight( 0x0AEA, 4).
811digit_weight( 0x0B6A, 4).
812digit_weight( 0x0BEA, 4).
813digit_weight( 0x0C6A, 4).
814digit_weight( 0x0CEA, 4).
815digit_weight( 0x0D6A, 4).
816digit_weight( 0x0DEA, 4).
817digit_weight( 0x0E54, 4).
818digit_weight( 0x0ED4, 4).
819digit_weight( 0x0F24, 4).
820digit_weight( 0x1044, 4).
821digit_weight( 0x1094, 4).
822digit_weight( 0x136C, 4).
823digit_weight( 0x17E4, 4).
824digit_weight( 0x17F4, 4).
825digit_weight( 0x1814, 4).
826digit_weight( 0x194A, 4).
827digit_weight( 0x19D4, 4).
828digit_weight( 0x1A84, 4).
829digit_weight( 0x1A94, 4).
830digit_weight( 0x1B54, 4).
831digit_weight( 0x1BB4, 4).
832digit_weight( 0x1C44, 4).
833digit_weight( 0x1C54, 4).
834digit_weight( 0x2074, 4).
835digit_weight( 0x2084, 4).
836digit_weight( 0x2163, 4).
837digit_weight( 0x2173, 4).
838digit_weight( 0x2463, 4).
839digit_weight( 0x2477, 4).
840digit_weight( 0x248B, 4).
841digit_weight( 0x24F8, 4).
842digit_weight( 0x2779, 4).
843digit_weight( 0x2783, 4).
844digit_weight( 0x278D, 4).
845digit_weight( 0x3024, 4).
846digit_weight( 0x3195, 4).
847digit_weight( 0x3223, 4).
848digit_weight( 0x3283, 4).
849digit_weight( 0x4E96, 4).
850digit_weight( 0x56DB, 4).
851digit_weight( 0x8086, 4).
852digit_weight( 0xA624, 4).
853digit_weight( 0xA6E9, 4).
854digit_weight( 0xA8D4, 4).
855digit_weight( 0xA904, 4).
856digit_weight( 0xA9D4, 4).
857digit_weight( 0xA9F4, 4).
858digit_weight( 0xAA54, 4).
859digit_weight( 0xABF4, 4).
860digit_weight( 0xFF14, 4).
861digit_weight( 0x1010A, 4).
862digit_weight( 0x102E4, 4).
863digit_weight( 0x104A4, 4).
864digit_weight( 0x1087C, 4).
865digit_weight( 0x108AA, 0x108AB, 4).
866digit_weight( 0x109C3, 4).
867digit_weight( 0x10A43, 4).
868digit_weight( 0x10B5B, 4).
869digit_weight( 0x10B7B, 4).
870digit_weight( 0x10BAC, 4).
871digit_weight( 0x10E63, 4).
872digit_weight( 0x11055, 4).
873digit_weight( 0x1106A, 4).
874digit_weight( 0x110F4, 4).
875digit_weight( 0x1113A, 4).
876digit_weight( 0x111D4, 4).
877digit_weight( 0x111E4, 4).
878digit_weight( 0x112F4, 4).
879digit_weight( 0x114D4, 4).
880digit_weight( 0x11654, 4).
881digit_weight( 0x116C4, 4).
882digit_weight( 0x11734, 4).
883digit_weight( 0x118E4, 4).
884digit_weight( 0x12402, 4).
885digit_weight( 0x12409, 4).
886digit_weight( 0x1240F, 4).
887digit_weight( 0x12418, 4).
888digit_weight( 0x12421, 4).
889digit_weight( 0x12426, 4).
890digit_weight( 0x12430, 4).
891digit_weight( 0x12438, 4).
892digit_weight( 0x1243C, 0x1243F, 4).
893digit_weight( 0x1244C, 4).
894digit_weight( 0x12452, 0x12453, 4).
895digit_weight( 0x12469, 4).
896digit_weight( 0x16A64, 4).
897digit_weight( 0x16B54, 4).
898digit_weight( 0x1D363, 4).
899digit_weight( 0x1D7D2, 4).
900digit_weight( 0x1D7DC, 4).
901digit_weight( 0x1D7E6, 4).
902digit_weight( 0x1D7F0, 4).
903digit_weight( 0x1D7FA, 4).
904digit_weight( 0x1E8CA, 4).
905digit_weight( 0x1F105, 4).
906digit_weight( 0x20064, 4).
907digit_weight( 0x200E2, 4).
908digit_weight( 0x2626D, 4).
909digit_weight( 0x0F2E, 9/2).
910digit_weight( 0x0035, 5).
911digit_weight( 0x0665, 5).
912digit_weight( 0x06F5, 5).
913digit_weight( 0x07C5, 5).
914digit_weight( 0x096B, 5).
915digit_weight( 0x09EB, 5).
916digit_weight( 0x0A6B, 5).
917digit_weight( 0x0AEB, 5).
918digit_weight( 0x0B6B, 5).
919digit_weight( 0x0BEB, 5).
920digit_weight( 0x0C6B, 5).
921digit_weight( 0x0CEB, 5).
922digit_weight( 0x0D6B, 5).
923digit_weight( 0x0DEB, 5).
924digit_weight( 0x0E55, 5).
925digit_weight( 0x0ED5, 5).
926digit_weight( 0x0F25, 5).
927digit_weight( 0x1045, 5).
928digit_weight( 0x1095, 5).
929digit_weight( 0x136D, 5).
930digit_weight( 0x17E5, 5).
931digit_weight( 0x17F5, 5).
932digit_weight( 0x1815, 5).
933digit_weight( 0x194B, 5).
934digit_weight( 0x19D5, 5).
935digit_weight( 0x1A85, 5).
936digit_weight( 0x1A95, 5).
937digit_weight( 0x1B55, 5).
938digit_weight( 0x1BB5, 5).
939digit_weight( 0x1C45, 5).
940digit_weight( 0x1C55, 5).
941digit_weight( 0x2075, 5).
942digit_weight( 0x2085, 5).
943digit_weight( 0x2164, 5).
944digit_weight( 0x2174, 5).
945digit_weight( 0x2464, 5).
946digit_weight( 0x2478, 5).
947digit_weight( 0x248C, 5).
948digit_weight( 0x24F9, 5).
949digit_weight( 0x277A, 5).
950digit_weight( 0x2784, 5).
951digit_weight( 0x278E, 5).
952digit_weight( 0x3025, 5).
953digit_weight( 0x3224, 5).
954digit_weight( 0x3284, 5).
955digit_weight( 0x3405, 5).
956digit_weight( 0x382A, 5).
957digit_weight( 0x4E94, 5).
958digit_weight( 0x4F0D, 5).
959digit_weight( 0xA625, 5).
960digit_weight( 0xA6EA, 5).
961digit_weight( 0xA8D5, 5).
962digit_weight( 0xA905, 5).
963digit_weight( 0xA9D5, 5).
964digit_weight( 0xA9F5, 5).
965digit_weight( 0xAA55, 5).
966digit_weight( 0xABF5, 5).
967digit_weight( 0xFF15, 5).
968digit_weight( 0x1010B, 5).
969digit_weight( 0x10143, 5).
970digit_weight( 0x10148, 5).
971digit_weight( 0x1014F, 5).
972digit_weight( 0x1015F, 5).
973digit_weight( 0x10173, 5).
974digit_weight( 0x102E5, 5).
975digit_weight( 0x10321, 5).
976digit_weight( 0x104A5, 5).
977digit_weight( 0x1087D, 5).
978digit_weight( 0x108AC, 5).
979digit_weight( 0x108FC, 5).
980digit_weight( 0x109C4, 5).
981digit_weight( 0x10AEC, 5).
982digit_weight( 0x10CFB, 5).
983digit_weight( 0x10E64, 5).
984digit_weight( 0x11056, 5).
985digit_weight( 0x1106B, 5).
986digit_weight( 0x110F5, 5).
987digit_weight( 0x1113B, 5).
988digit_weight( 0x111D5, 5).
989digit_weight( 0x111E5, 5).
990digit_weight( 0x112F5, 5).
991digit_weight( 0x114D5, 5).
992digit_weight( 0x11655, 5).
993digit_weight( 0x116C5, 5).
994digit_weight( 0x11735, 5).
995digit_weight( 0x118E5, 5).
996digit_weight( 0x12403, 5).
997digit_weight( 0x1240A, 5).
998digit_weight( 0x12410, 5).
999digit_weight( 0x12419, 5).
1000digit_weight( 0x12422, 5).
1001digit_weight( 0x12427, 5).
1002digit_weight( 0x12431, 5).
1003digit_weight( 0x12439, 5).
1004digit_weight( 0x1244D, 5).
1005digit_weight( 0x12454, 0x12455, 5).
1006digit_weight( 0x1246A, 5).
1007digit_weight( 0x16A65, 5).
1008digit_weight( 0x16B55, 5).
1009digit_weight( 0x1D364, 5).
1010digit_weight( 0x1D7D3, 5).
1011digit_weight( 0x1D7DD, 5).
1012digit_weight( 0x1D7E7, 5).
1013digit_weight( 0x1D7F1, 5).
1014digit_weight( 0x1D7FB, 5).
1015digit_weight( 0x1E8CB, 5).
1016digit_weight( 0x1F106, 5).
1017digit_weight( 0x20121, 5).
1018digit_weight( 0x0F2F, 11/2).
1019digit_weight( 0x0036, 6).
1020digit_weight( 0x0666, 6).
1021digit_weight( 0x06F6, 6).
1022digit_weight( 0x07C6, 6).
1023digit_weight( 0x096C, 6).
1024digit_weight( 0x09EC, 6).
1025digit_weight( 0x0A6C, 6).
1026digit_weight( 0x0AEC, 6).
1027digit_weight( 0x0B6C, 6).
1028digit_weight( 0x0BEC, 6).
1029digit_weight( 0x0C6C, 6).
1030digit_weight( 0x0CEC, 6).
1031digit_weight( 0x0D6C, 6).
1032digit_weight( 0x0DEC, 6).
1033digit_weight( 0x0E56, 6).
1034digit_weight( 0x0ED6, 6).
1035digit_weight( 0x0F26, 6).
1036digit_weight( 0x1046, 6).
1037digit_weight( 0x1096, 6).
1038digit_weight( 0x136E, 6).
1039digit_weight( 0x17E6, 6).
1040digit_weight( 0x17F6, 6).
1041digit_weight( 0x1816, 6).
1042digit_weight( 0x194C, 6).
1043digit_weight( 0x19D6, 6).
1044digit_weight( 0x1A86, 6).
1045digit_weight( 0x1A96, 6).
1046digit_weight( 0x1B56, 6).
1047digit_weight( 0x1BB6, 6).
1048digit_weight( 0x1C46, 6).
1049digit_weight( 0x1C56, 6).
1050digit_weight( 0x2076, 6).
1051digit_weight( 0x2086, 6).
1052digit_weight( 0x2165, 6).
1053digit_weight( 0x2175, 6).
1054digit_weight( 0x2185, 6).
1055digit_weight( 0x2465, 6).
1056digit_weight( 0x2479, 6).
1057digit_weight( 0x248D, 6).
1058digit_weight( 0x24FA, 6).
1059digit_weight( 0x277B, 6).
1060digit_weight( 0x2785, 6).
1061digit_weight( 0x278F, 6).
1062digit_weight( 0x3026, 6).
1063digit_weight( 0x3225, 6).
1064digit_weight( 0x3285, 6).
1065digit_weight( 0x516D, 6).
1066digit_weight( 0x9646, 6).
1067digit_weight( 0x9678, 6).
1068digit_weight( 0xA626, 6).
1069digit_weight( 0xA6EB, 6).
1070digit_weight( 0xA8D6, 6).
1071digit_weight( 0xA906, 6).
1072digit_weight( 0xA9D6, 6).
1073digit_weight( 0xA9F6, 6).
1074digit_weight( 0xAA56, 6).
1075digit_weight( 0xABF6, 6).
1076digit_weight( 0xF9D1, 6).
1077digit_weight( 0xF9D3, 6).
1078digit_weight( 0xFF16, 6).
1079digit_weight( 0x1010C, 6).
1080digit_weight( 0x102E6, 6).
1081digit_weight( 0x104A6, 6).
1082digit_weight( 0x109C5, 6).
1083digit_weight( 0x10E65, 6).
1084digit_weight( 0x11057, 6).
1085digit_weight( 0x1106C, 6).
1086digit_weight( 0x110F6, 6).
1087digit_weight( 0x1113C, 6).
1088digit_weight( 0x111D6, 6).
1089digit_weight( 0x111E6, 6).
1090digit_weight( 0x112F6, 6).
1091digit_weight( 0x114D6, 6).
1092digit_weight( 0x11656, 6).
1093digit_weight( 0x116C6, 6).
1094digit_weight( 0x11736, 6).
1095digit_weight( 0x118E6, 6).
1096digit_weight( 0x12404, 6).
1097digit_weight( 0x1240B, 6).
1098digit_weight( 0x12411, 6).
1099digit_weight( 0x1241A, 6).
1100digit_weight( 0x12428, 6).
1101digit_weight( 0x12440, 6).
1102digit_weight( 0x1244E, 6).
1103digit_weight( 0x1246B, 6).
1104digit_weight( 0x16A66, 6).
1105digit_weight( 0x16B56, 6).
1106digit_weight( 0x1D365, 6).
1107digit_weight( 0x1D7D4, 6).
1108digit_weight( 0x1D7DE, 6).
1109digit_weight( 0x1D7E8, 6).
1110digit_weight( 0x1D7F2, 6).
1111digit_weight( 0x1D7FC, 6).
1112digit_weight( 0x1E8CC, 6).
1113digit_weight( 0x1F107, 6).
1114digit_weight( 0x20AEA, 6).
1115digit_weight( 0x0F30, 13/2).
1116digit_weight( 0x0037, 7).
1117digit_weight( 0x0667, 7).
1118digit_weight( 0x06F7, 7).
1119digit_weight( 0x07C7, 7).
1120digit_weight( 0x096D, 7).
1121digit_weight( 0x09ED, 7).
1122digit_weight( 0x0A6D, 7).
1123digit_weight( 0x0AED, 7).
1124digit_weight( 0x0B6D, 7).
1125digit_weight( 0x0BED, 7).
1126digit_weight( 0x0C6D, 7).
1127digit_weight( 0x0CED, 7).
1128digit_weight( 0x0D6D, 7).
1129digit_weight( 0x0DED, 7).
1130digit_weight( 0x0E57, 7).
1131digit_weight( 0x0ED7, 7).
1132digit_weight( 0x0F27, 7).
1133digit_weight( 0x1047, 7).
1134digit_weight( 0x1097, 7).
1135digit_weight( 0x136F, 7).
1136digit_weight( 0x17E7, 7).
1137digit_weight( 0x17F7, 7).
1138digit_weight( 0x1817, 7).
1139digit_weight( 0x194D, 7).
1140digit_weight( 0x19D7, 7).
1141digit_weight( 0x1A87, 7).
1142digit_weight( 0x1A97, 7).
1143digit_weight( 0x1B57, 7).
1144digit_weight( 0x1BB7, 7).
1145digit_weight( 0x1C47, 7).
1146digit_weight( 0x1C57, 7).
1147digit_weight( 0x2077, 7).
1148digit_weight( 0x2087, 7).
1149digit_weight( 0x2166, 7).
1150digit_weight( 0x2176, 7).
1151digit_weight( 0x2466, 7).
1152digit_weight( 0x247A, 7).
1153digit_weight( 0x248E, 7).
1154digit_weight( 0x24FB, 7).
1155digit_weight( 0x277C, 7).
1156digit_weight( 0x2786, 7).
1157digit_weight( 0x2790, 7).
1158digit_weight( 0x3027, 7).
1159digit_weight( 0x3226, 7).
1160digit_weight( 0x3286, 7).
1161digit_weight( 0x3B4D, 7).
1162digit_weight( 0x4E03, 7).
1163digit_weight( 0x67D2, 7).
1164digit_weight( 0x6F06, 7).
1165digit_weight( 0xA627, 7).
1166digit_weight( 0xA6EC, 7).
1167digit_weight( 0xA8D7, 7).
1168digit_weight( 0xA907, 7).
1169digit_weight( 0xA9D7, 7).
1170digit_weight( 0xA9F7, 7).
1171digit_weight( 0xAA57, 7).
1172digit_weight( 0xABF7, 7).
1173digit_weight( 0xFF17, 7).
1174digit_weight( 0x1010D, 7).
1175digit_weight( 0x102E7, 7).
1176digit_weight( 0x104A7, 7).
1177digit_weight( 0x109C6, 7).
1178digit_weight( 0x10E66, 7).
1179digit_weight( 0x11058, 7).
1180digit_weight( 0x1106D, 7).
1181digit_weight( 0x110F7, 7).
1182digit_weight( 0x1113D, 7).
1183digit_weight( 0x111D7, 7).
1184digit_weight( 0x111E7, 7).
1185digit_weight( 0x112F7, 7).
1186digit_weight( 0x114D7, 7).
1187digit_weight( 0x11657, 7).
1188digit_weight( 0x116C7, 7).
1189digit_weight( 0x11737, 7).
1190digit_weight( 0x118E7, 7).
1191digit_weight( 0x12405, 7).
1192digit_weight( 0x1240C, 7).
1193digit_weight( 0x12412, 7).
1194digit_weight( 0x1241B, 7).
1195digit_weight( 0x12429, 7).
1196digit_weight( 0x12441, 0x12443, 7).
1197digit_weight( 0x1246C, 7).
1198digit_weight( 0x16A67, 7).
1199digit_weight( 0x16B57, 7).
1200digit_weight( 0x1D366, 7).
1201digit_weight( 0x1D7D5, 7).
1202digit_weight( 0x1D7DF, 7).
1203digit_weight( 0x1D7E9, 7).
1204digit_weight( 0x1D7F3, 7).
1205digit_weight( 0x1D7FD, 7).
1206digit_weight( 0x1E8CD, 7).
1207digit_weight( 0x1F108, 7).
1208digit_weight( 0x20001, 7).
1209digit_weight( 0x0F31, 15/2).
1210digit_weight( 0x0038, 8).
1211digit_weight( 0x0668, 8).
1212digit_weight( 0x06F8, 8).
1213digit_weight( 0x07C8, 8).
1214digit_weight( 0x096E, 8).
1215digit_weight( 0x09EE, 8).
1216digit_weight( 0x0A6E, 8).
1217digit_weight( 0x0AEE, 8).
1218digit_weight( 0x0B6E, 8).
1219digit_weight( 0x0BEE, 8).
1220digit_weight( 0x0C6E, 8).
1221digit_weight( 0x0CEE, 8).
1222digit_weight( 0x0D6E, 8).
1223digit_weight( 0x0DEE, 8).
1224digit_weight( 0x0E58, 8).
1225digit_weight( 0x0ED8, 8).
1226digit_weight( 0x0F28, 8).
1227digit_weight( 0x1048, 8).
1228digit_weight( 0x1098, 8).
1229digit_weight( 0x1370, 8).
1230digit_weight( 0x17E8, 8).
1231digit_weight( 0x17F8, 8).
1232digit_weight( 0x1818, 8).
1233digit_weight( 0x194E, 8).
1234digit_weight( 0x19D8, 8).
1235digit_weight( 0x1A88, 8).
1236digit_weight( 0x1A98, 8).
1237digit_weight( 0x1B58, 8).
1238digit_weight( 0x1BB8, 8).
1239digit_weight( 0x1C48, 8).
1240digit_weight( 0x1C58, 8).
1241digit_weight( 0x2078, 8).
1242digit_weight( 0x2088, 8).
1243digit_weight( 0x2167, 8).
1244digit_weight( 0x2177, 8).
1245digit_weight( 0x2467, 8).
1246digit_weight( 0x247B, 8).
1247digit_weight( 0x248F, 8).
1248digit_weight( 0x24FC, 8).
1249digit_weight( 0x277D, 8).
1250digit_weight( 0x2787, 8).
1251digit_weight( 0x2791, 8).
1252digit_weight( 0x3028, 8).
1253digit_weight( 0x3227, 8).
1254digit_weight( 0x3287, 8).
1255digit_weight( 0x516B, 8).
1256digit_weight( 0x634C, 8).
1257digit_weight( 0xA628, 8).
1258digit_weight( 0xA6ED, 8).
1259digit_weight( 0xA8D8, 8).
1260digit_weight( 0xA908, 8).
1261digit_weight( 0xA9D8, 8).
1262digit_weight( 0xA9F8, 8).
1263digit_weight( 0xAA58, 8).
1264digit_weight( 0xABF8, 8).
1265digit_weight( 0xFF18, 8).
1266digit_weight( 0x1010E, 8).
1267digit_weight( 0x102E8, 8).
1268digit_weight( 0x104A8, 8).
1269digit_weight( 0x109C7, 8).
1270digit_weight( 0x10E67, 8).
1271digit_weight( 0x11059, 8).
1272digit_weight( 0x1106E, 8).
1273digit_weight( 0x110F8, 8).
1274digit_weight( 0x1113E, 8).
1275digit_weight( 0x111D8, 8).
1276digit_weight( 0x111E8, 8).
1277digit_weight( 0x112F8, 8).
1278digit_weight( 0x114D8, 8).
1279digit_weight( 0x11658, 8).
1280digit_weight( 0x116C8, 8).
1281digit_weight( 0x11738, 8).
1282digit_weight( 0x118E8, 8).
1283digit_weight( 0x12406, 8).
1284digit_weight( 0x1240D, 8).
1285digit_weight( 0x12413, 8).
1286digit_weight( 0x1241C, 8).
1287digit_weight( 0x1242A, 8).
1288digit_weight( 0x12444, 0x12445, 8).
1289digit_weight( 0x1246D, 8).
1290digit_weight( 0x16A68, 8).
1291digit_weight( 0x16B58, 8).
1292digit_weight( 0x1D367, 8).
1293digit_weight( 0x1D7D6, 8).
1294digit_weight( 0x1D7E0, 8).
1295digit_weight( 0x1D7EA, 8).
1296digit_weight( 0x1D7F4, 8).
1297digit_weight( 0x1D7FE, 8).
1298digit_weight( 0x1E8CE, 8).
1299digit_weight( 0x1F109, 8).
1300digit_weight( 0x0F32, 17/2).
1301digit_weight( 0x0039, 9).
1302digit_weight( 0x0669, 9).
1303digit_weight( 0x06F9, 9).
1304digit_weight( 0x07C9, 9).
1305digit_weight( 0x096F, 9).
1306digit_weight( 0x09EF, 9).
1307digit_weight( 0x0A6F, 9).
1308digit_weight( 0x0AEF, 9).
1309digit_weight( 0x0B6F, 9).
1310digit_weight( 0x0BEF, 9).
1311digit_weight( 0x0C6F, 9).
1312digit_weight( 0x0CEF, 9).
1313digit_weight( 0x0D6F, 9).
1314digit_weight( 0x0DEF, 9).
1315digit_weight( 0x0E59, 9).
1316digit_weight( 0x0ED9, 9).
1317digit_weight( 0x0F29, 9).
1318digit_weight( 0x1049, 9).
1319digit_weight( 0x1099, 9).
1320digit_weight( 0x1371, 9).
1321digit_weight( 0x17E9, 9).
1322digit_weight( 0x17F9, 9).
1323digit_weight( 0x1819, 9).
1324digit_weight( 0x194F, 9).
1325digit_weight( 0x19D9, 9).
1326digit_weight( 0x1A89, 9).
1327digit_weight( 0x1A99, 9).
1328digit_weight( 0x1B59, 9).
1329digit_weight( 0x1BB9, 9).
1330digit_weight( 0x1C49, 9).
1331digit_weight( 0x1C59, 9).
1332digit_weight( 0x2079, 9).
1333digit_weight( 0x2089, 9).
1334digit_weight( 0x2168, 9).
1335digit_weight( 0x2178, 9).
1336digit_weight( 0x2468, 9).
1337digit_weight( 0x247C, 9).
1338digit_weight( 0x2490, 9).
1339digit_weight( 0x24FD, 9).
1340digit_weight( 0x277E, 9).
1341digit_weight( 0x2788, 9).
1342digit_weight( 0x2792, 9).
1343digit_weight( 0x3029, 9).
1344digit_weight( 0x3228, 9).
1345digit_weight( 0x3288, 9).
1346digit_weight( 0x4E5D, 9).
1347digit_weight( 0x5EFE, 9).
1348digit_weight( 0x7396, 9).
1349digit_weight( 0xA629, 9).
1350digit_weight( 0xA6EE, 9).
1351digit_weight( 0xA8D9, 9).
1352digit_weight( 0xA909, 9).
1353digit_weight( 0xA9D9, 9).
1354digit_weight( 0xA9F9, 9).
1355digit_weight( 0xAA59, 9).
1356digit_weight( 0xABF9, 9).
1357digit_weight( 0xFF19, 9).
1358digit_weight( 0x1010F, 9).
1359digit_weight( 0x102E9, 9).
1360digit_weight( 0x104A9, 9).
1361digit_weight( 0x109C8, 9).
1362digit_weight( 0x10E68, 9).
1363digit_weight( 0x1105A, 9).
1364digit_weight( 0x1106F, 9).
1365digit_weight( 0x110F9, 9).
1366digit_weight( 0x1113F, 9).
1367digit_weight( 0x111D9, 9).
1368digit_weight( 0x111E9, 9).
1369digit_weight( 0x112F9, 9).
1370digit_weight( 0x114D9, 9).
1371digit_weight( 0x11659, 9).
1372digit_weight( 0x116C9, 9).
1373digit_weight( 0x11739, 9).
1374digit_weight( 0x118E9, 9).
1375digit_weight( 0x12407, 9).
1376digit_weight( 0x1240E, 9).
1377digit_weight( 0x12414, 9).
1378digit_weight( 0x1241D, 9).
1379digit_weight( 0x1242B, 9).
1380digit_weight( 0x12446, 0x12449, 9).
1381digit_weight( 0x1246E, 9).
1382digit_weight( 0x16A69, 9).
1383digit_weight( 0x16B59, 9).
1384digit_weight( 0x1D368, 9).
1385digit_weight( 0x1D7D7, 9).
1386digit_weight( 0x1D7E1, 9).
1387digit_weight( 0x1D7EB, 9).
1388digit_weight( 0x1D7F5, 9).
1389digit_weight( 0x1D7FF, 9).
1390digit_weight( 0x1E8CF, 9).
1391digit_weight( 0x1F10A, 9).
1392digit_weight( 0x2F890, 9).
1393digit_weight( 0x0BF0, 10).
1394digit_weight( 0x0D70, 10).
1395digit_weight( 0x1372, 10).
1396digit_weight( 0x2169, 10).
1397digit_weight( 0x2179, 10).
1398digit_weight( 0x2469, 10).
1399digit_weight( 0x247D, 10).
1400digit_weight( 0x2491, 10).
1401digit_weight( 0x24FE, 10).
1402digit_weight( 0x277F, 10).
1403digit_weight( 0x2789, 10).
1404digit_weight( 0x2793, 10).
1405digit_weight( 0x3038, 10).
1406digit_weight( 0x3229, 10).
1407digit_weight( 0x3248, 10).
1408digit_weight( 0x3289, 10).
1409digit_weight( 0x4EC0, 10).
1410digit_weight( 0x5341, 10).
1411digit_weight( 0x62FE, 10).
1412digit_weight( 0xF973, 10).
1413digit_weight( 0xF9FD, 10).
1414digit_weight( 0x10110, 10).
1415digit_weight( 0x10149, 10).
1416digit_weight( 0x10150, 10).
1417digit_weight( 0x10157, 10).
1418digit_weight( 0x10160, 0x10164, 10).
1419digit_weight( 0x102EA, 10).
1420digit_weight( 0x10322, 10).
1421digit_weight( 0x103D3, 10).
1422digit_weight( 0x1085B, 10).
1423digit_weight( 0x1087E, 10).
1424digit_weight( 0x108AD, 10).
1425digit_weight( 0x108FD, 10).
1426digit_weight( 0x10917, 10).
1427digit_weight( 0x109C9, 10).
1428digit_weight( 0x10A44, 10).
1429digit_weight( 0x10A9E, 10).
1430digit_weight( 0x10AED, 10).
1431digit_weight( 0x10B5C, 10).
1432digit_weight( 0x10B7C, 10).
1433digit_weight( 0x10BAD, 10).
1434digit_weight( 0x10CFC, 10).
1435digit_weight( 0x10E69, 10).
1436digit_weight( 0x1105B, 10).
1437digit_weight( 0x111EA, 10).
1438digit_weight( 0x1173A, 10).
1439digit_weight( 0x118EA, 10).
1440digit_weight( 0x16B5B, 10).
1441digit_weight( 0x1D369, 10).
1442digit_weight( 0x216A, 11).
1443digit_weight( 0x217A, 11).
1444digit_weight( 0x246A, 11).
1445digit_weight( 0x247E, 11).
1446digit_weight( 0x2492, 11).
1447digit_weight( 0x24EB, 11).
1448digit_weight( 0x216B, 12).
1449digit_weight( 0x217B, 12).
1450digit_weight( 0x246B, 12).
1451digit_weight( 0x247F, 12).
1452digit_weight( 0x2493, 12).
1453digit_weight( 0x24EC, 12).
1454digit_weight( 0x246C, 13).
1455digit_weight( 0x2480, 13).
1456digit_weight( 0x2494, 13).
1457digit_weight( 0x24ED, 13).
1458digit_weight( 0x246D, 14).
1459digit_weight( 0x2481, 14).
1460digit_weight( 0x2495, 14).
1461digit_weight( 0x24EE, 14).
1462digit_weight( 0x246E, 15).
1463digit_weight( 0x2482, 15).
1464digit_weight( 0x2496, 15).
1465digit_weight( 0x24EF, 15).
1466digit_weight( 0x09F9, 16).
1467digit_weight( 0x246F, 16).
1468digit_weight( 0x2483, 16).
1469digit_weight( 0x2497, 16).
1470digit_weight( 0x24F0, 16).
1471digit_weight( 0x16EE, 17).
1472digit_weight( 0x2470, 17).
1473digit_weight( 0x2484, 17).
1474digit_weight( 0x2498, 17).
1475digit_weight( 0x24F1, 17).
1476digit_weight( 0x16EF, 18).
1477digit_weight( 0x2471, 18).
1478digit_weight( 0x2485, 18).
1479digit_weight( 0x2499, 18).
1480digit_weight( 0x24F2, 18).
1481digit_weight( 0x16F0, 19).
1482digit_weight( 0x2472, 19).
1483digit_weight( 0x2486, 19).
1484digit_weight( 0x249A, 19).
1485digit_weight( 0x24F3, 19).
1486digit_weight( 0x1373, 20).
1487digit_weight( 0x2473, 20).
1488digit_weight( 0x2487, 20).
1489digit_weight( 0x249B, 20).
1490digit_weight( 0x24F4, 20).
1491digit_weight( 0x3039, 20).
1492digit_weight( 0x3249, 20).
1493digit_weight( 0x5344, 20).
1494digit_weight( 0x5EFF, 20).
1495digit_weight( 0x10111, 20).
1496digit_weight( 0x102EB, 20).
1497digit_weight( 0x103D4, 20).
1498digit_weight( 0x1085C, 20).
1499digit_weight( 0x1087F, 20).
1500digit_weight( 0x108AE, 20).
1501digit_weight( 0x108FE, 20).
1502digit_weight( 0x10918, 20).
1503digit_weight( 0x109CA, 20).
1504digit_weight( 0x10A45, 20).
1505digit_weight( 0x10A9F, 20).
1506digit_weight( 0x10AEE, 20).
1507digit_weight( 0x10B5D, 20).
1508digit_weight( 0x10B7D, 20).
1509digit_weight( 0x10BAE, 20).
1510digit_weight( 0x10E6A, 20).
1511digit_weight( 0x1105C, 20).
1512digit_weight( 0x111EB, 20).
1513digit_weight( 0x1173B, 20).
1514digit_weight( 0x118EB, 20).
1515digit_weight( 0x1D36A, 20).
1516digit_weight( 0x3251, 21).
1517digit_weight( 0x3252, 22).
1518digit_weight( 0x3253, 23).
1519digit_weight( 0x3254, 24).
1520digit_weight( 0x3255, 25).
1521digit_weight( 0x3256, 26).
1522digit_weight( 0x3257, 27).
1523digit_weight( 0x3258, 28).
1524digit_weight( 0x3259, 29).
1525digit_weight( 0x1374, 30).
1526digit_weight( 0x303A, 30).
1527digit_weight( 0x324A, 30).
1528digit_weight( 0x325A, 30).
1529digit_weight( 0x5345, 30).
1530digit_weight( 0x10112, 30).
1531digit_weight( 0x10165, 30).
1532digit_weight( 0x102EC, 30).
1533digit_weight( 0x109CB, 30).
1534digit_weight( 0x10E6B, 30).
1535digit_weight( 0x1105D, 30).
1536digit_weight( 0x111EC, 30).
1537digit_weight( 0x118EC, 30).
1538digit_weight( 0x1D36B, 30).
1539digit_weight( 0x20983, 30).
1540digit_weight( 0x325B, 31).
1541digit_weight( 0x325C, 32).
1542digit_weight( 0x325D, 33).
1543digit_weight( 0x325E, 34).
1544digit_weight( 0x325F, 35).
1545digit_weight( 0x32B1, 36).
1546digit_weight( 0x32B2, 37).
1547digit_weight( 0x32B3, 38).
1548digit_weight( 0x32B4, 39).
1549digit_weight( 0x1375, 40).
1550digit_weight( 0x324B, 40).
1551digit_weight( 0x32B5, 40).
1552digit_weight( 0x534C, 40).
1553digit_weight( 0x10113, 40).
1554digit_weight( 0x102ED, 40).
1555digit_weight( 0x109CC, 40).
1556digit_weight( 0x10E6C, 40).
1557digit_weight( 0x1105E, 40).
1558digit_weight( 0x111ED, 40).
1559digit_weight( 0x118ED, 40).
1560digit_weight( 0x12467, 40).
1561digit_weight( 0x1D36C, 40).
1562digit_weight( 0x2098C, 40).
1563digit_weight( 0x2099C, 40).
1564digit_weight( 0x32B6, 41).
1565digit_weight( 0x32B7, 42).
1566digit_weight( 0x32B8, 43).
1567digit_weight( 0x32B9, 44).
1568digit_weight( 0x32BA, 45).
1569digit_weight( 0x32BB, 46).
1570digit_weight( 0x32BC, 47).
1571digit_weight( 0x32BD, 48).
1572digit_weight( 0x32BE, 49).
1573digit_weight( 0x1376, 50).
1574digit_weight( 0x216C, 50).
1575digit_weight( 0x217C, 50).
1576digit_weight( 0x2186, 50).
1577digit_weight( 0x324C, 50).
1578digit_weight( 0x32BF, 50).
1579digit_weight( 0x10114, 50).
1580digit_weight( 0x10144, 50).
1581digit_weight( 0x1014A, 50).
1582digit_weight( 0x10151, 50).
1583digit_weight( 0x10166, 0x10169, 50).
1584digit_weight( 0x10174, 50).
1585digit_weight( 0x102EE, 50).
1586digit_weight( 0x10323, 50).
1587digit_weight( 0x109CD, 50).
1588digit_weight( 0x10A7E, 50).
1589digit_weight( 0x10CFD, 50).
1590digit_weight( 0x10E6D, 50).
1591digit_weight( 0x1105F, 50).
1592digit_weight( 0x111EE, 50).
1593digit_weight( 0x118EE, 50).
1594digit_weight( 0x12468, 50).
1595digit_weight( 0x1D36D, 50).
1596digit_weight( 0x1377, 60).
1597digit_weight( 0x324D, 60).
1598digit_weight( 0x10115, 60).
1599digit_weight( 0x102EF, 60).
1600digit_weight( 0x109CE, 60).
1601digit_weight( 0x10E6E, 60).
1602digit_weight( 0x11060, 60).
1603digit_weight( 0x111EF, 60).
1604digit_weight( 0x118EF, 60).
1605digit_weight( 0x1D36E, 60).
1606digit_weight( 0x1378, 70).
1607digit_weight( 0x324E, 70).
1608digit_weight( 0x10116, 70).
1609digit_weight( 0x102F0, 70).
1610digit_weight( 0x109CF, 70).
1611digit_weight( 0x10E6F, 70).
1612digit_weight( 0x11061, 70).
1613digit_weight( 0x111F0, 70).
1614digit_weight( 0x118F0, 70).
1615digit_weight( 0x1D36F, 70).
1616digit_weight( 0x1379, 80).
1617digit_weight( 0x324F, 80).
1618digit_weight( 0x10117, 80).
1619digit_weight( 0x102F1, 80).
1620digit_weight( 0x10E70, 80).
1621digit_weight( 0x11062, 80).
1622digit_weight( 0x111F1, 80).
1623digit_weight( 0x118F1, 80).
1624digit_weight( 0x1D370, 80).
1625digit_weight( 0x137A, 90).
1626digit_weight( 0x10118, 90).
1627digit_weight( 0x102F2, 90).
1628digit_weight( 0x10341, 90).
1629digit_weight( 0x10E71, 90).
1630digit_weight( 0x11063, 90).
1631digit_weight( 0x111F2, 90).
1632digit_weight( 0x118F2, 90).
1633digit_weight( 0x1D371, 90).
1634digit_weight( 0x0BF1, 100).
1635digit_weight( 0x0D71, 100).
1636digit_weight( 0x137B, 100).
1637digit_weight( 0x216D, 100).
1638digit_weight( 0x217D, 100).
1639digit_weight( 0x4F70, 100).
1640digit_weight( 0x767E, 100).
1641digit_weight( 0x964C, 100).
1642digit_weight( 0x10119, 100).
1643digit_weight( 0x1014B, 100).
1644digit_weight( 0x10152, 100).
1645digit_weight( 0x1016A, 100).
1646digit_weight( 0x102F3, 100).
1647digit_weight( 0x103D5, 100).
1648digit_weight( 0x1085D, 100).
1649digit_weight( 0x108AF, 100).
1650digit_weight( 0x108FF, 100).
1651digit_weight( 0x10919, 100).
1652digit_weight( 0x109D2, 100).
1653digit_weight( 0x10A46, 100).
1654digit_weight( 0x10AEF, 100).
1655digit_weight( 0x10B5E, 100).
1656digit_weight( 0x10B7E, 100).
1657digit_weight( 0x10BAF, 100).
1658digit_weight( 0x10CFE, 100).
1659digit_weight( 0x10E72, 100).
1660digit_weight( 0x11064, 100).
1661digit_weight( 0x111F3, 100).
1662digit_weight( 0x16B5C, 100).
1663digit_weight( 0x1011A, 200).
1664digit_weight( 0x102F4, 200).
1665digit_weight( 0x109D3, 200).
1666digit_weight( 0x10E73, 200).
1667digit_weight( 0x1011B, 300).
1668digit_weight( 0x1016B, 300).
1669digit_weight( 0x102F5, 300).
1670digit_weight( 0x109D4, 300).
1671digit_weight( 0x10E74, 300).
1672digit_weight( 0x1011C, 400).
1673digit_weight( 0x102F6, 400).
1674digit_weight( 0x109D5, 400).
1675digit_weight( 0x10E75, 400).
1676digit_weight( 0x216E, 500).
1677digit_weight( 0x217E, 500).
1678digit_weight( 0x1011D, 500).
1679digit_weight( 0x10145, 500).
1680digit_weight( 0x1014C, 500).
1681digit_weight( 0x10153, 500).
1682digit_weight( 0x1016C, 0x10170, 500).
1683digit_weight( 0x102F7, 500).
1684digit_weight( 0x109D6, 500).
1685digit_weight( 0x10E76, 500).
1686digit_weight( 0x1011E, 600).
1687digit_weight( 0x102F8, 600).
1688digit_weight( 0x109D7, 600).
1689digit_weight( 0x10E77, 600).
1690digit_weight( 0x1011F, 700).
1691digit_weight( 0x102F9, 700).
1692digit_weight( 0x109D8, 700).
1693digit_weight( 0x10E78, 700).
1694digit_weight( 0x10120, 800).
1695digit_weight( 0x102FA, 800).
1696digit_weight( 0x109D9, 800).
1697digit_weight( 0x10E79, 800).
1698digit_weight( 0x10121, 900).
1699digit_weight( 0x102FB, 900).
1700digit_weight( 0x1034A, 900).
1701digit_weight( 0x109DA, 900).
1702digit_weight( 0x10E7A, 900).
1703digit_weight( 0x0BF2, 1000).
1704digit_weight( 0x0D72, 1000).
1705digit_weight( 0x216F, 1000).
1706digit_weight( 0x217F, 0x2180, 1000).
1707digit_weight( 0x4EDF, 1000).
1708digit_weight( 0x5343, 1000).
1709digit_weight( 0x9621, 1000).
1710digit_weight( 0x10122, 1000).
1711digit_weight( 0x1014D, 1000).
1712digit_weight( 0x10154, 1000).
1713digit_weight( 0x10171, 1000).
1714digit_weight( 0x1085E, 1000).
1715digit_weight( 0x109DB, 1000).
1716digit_weight( 0x10A47, 1000).
1717digit_weight( 0x10B5F, 1000).
1718digit_weight( 0x10B7F, 1000).
1719digit_weight( 0x10CFF, 1000).
1720digit_weight( 0x11065, 1000).
1721digit_weight( 0x111F4, 1000).
1722digit_weight( 0x10123, 2000).
1723digit_weight( 0x109DC, 2000).
1724digit_weight( 0x10124, 3000).
1725digit_weight( 0x109DD, 3000).
1726digit_weight( 0x10125, 4000).
1727digit_weight( 0x109DE, 4000).
1728digit_weight( 0x2181, 5000).
1729digit_weight( 0x10126, 5000).
1730digit_weight( 0x10146, 5000).
1731digit_weight( 0x1014E, 5000).
1732digit_weight( 0x10172, 5000).
1733digit_weight( 0x109DF, 5000).
1734digit_weight( 0x10127, 6000).
1735digit_weight( 0x109E0, 6000).
1736digit_weight( 0x10128, 7000).
1737digit_weight( 0x109E1, 7000).
1738digit_weight( 0x10129, 8000).
1739digit_weight( 0x109E2, 8000).
1740digit_weight( 0x1012A, 9000).
1741digit_weight( 0x109E3, 9000).
1742digit_weight( 0x137C, 10000).
1743digit_weight( 0x2182, 10000).
1744digit_weight( 0x4E07, 10000).
1745digit_weight( 0x842C, 10000).
1746digit_weight( 0x1012B, 10000).
1747digit_weight( 0x10155, 10000).
1748digit_weight( 0x1085F, 10000).
1749digit_weight( 0x109E4, 10000).
1750digit_weight( 0x16B5D, 10000).
1751digit_weight( 0x1012C, 20000).
1752digit_weight( 0x109E5, 20000).
1753digit_weight( 0x1012D, 30000).
1754digit_weight( 0x109E6, 30000).
1755digit_weight( 0x1012E, 40000).
1756digit_weight( 0x109E7, 40000).
1757digit_weight( 0x2187, 50000).
1758digit_weight( 0x1012F, 50000).
1759digit_weight( 0x10147, 50000).
1760digit_weight( 0x10156, 50000).
1761digit_weight( 0x109E8, 50000).
1762digit_weight( 0x10130, 60000).
1763digit_weight( 0x109E9, 60000).
1764digit_weight( 0x10131, 70000).
1765digit_weight( 0x109EA, 70000).
1766digit_weight( 0x10132, 80000).
1767digit_weight( 0x109EB, 80000).
1768digit_weight( 0x10133, 90000).
1769digit_weight( 0x109EC, 90000).
1770digit_weight( 0x2188, 100000).
1771digit_weight( 0x109ED, 100000).
1772digit_weight( 0x109EE, 200000).
1773digit_weight( 0x12432, 216000).
1774digit_weight( 0x109EF, 300000).
1775digit_weight( 0x109F0, 400000).
1776digit_weight( 0x12433, 432000).
1777digit_weight( 0x109F1, 500000).
1778digit_weight( 0x109F2, 600000).
1779digit_weight( 0x109F3, 700000).
1780digit_weight( 0x109F4, 800000).
1781digit_weight( 0x109F5, 900000).
1782digit_weight( 0x16B5E, 1000000).
1783digit_weight( 0x4EBF, 100000000).
1784digit_weight( 0x5104, 100000000).
1785digit_weight( 0x16B5F, 100000000).
1786digit_weight( 0x16B60, 10000000000).
1787digit_weight( 0x5146, 1000000000000).
1788digit_weight( 0x16B61, 1000000000000).
1789
1790/* brackets and matching characters, obtained from
1791
1792http://www.unicode.org/Public/UCD/latest/ucd/BidiBrackets.txt
1793
1794by running
1795
1796 grep '[ \t]\#' BidiBrackets.txt | awk '{ print "brackets( 0x" $1 ", 0x"$2 ")." }' |sed 's/;//g'
1797*/
1798
1799paren_paren( 0x0028, 0x0029).
1800paren_paren( 0x0029, 0x0028).
1801paren_paren( 0x005B, 0x005D).
1802paren_paren( 0x005D, 0x005B).
1803paren_paren( 0x007B, 0x007D).
1804paren_paren( 0x007D, 0x007B).
1805paren_paren( 0x0F3A, 0x0F3B).
1806paren_paren( 0x0F3B, 0x0F3A).
1807paren_paren( 0x0F3C, 0x0F3D).
1808paren_paren( 0x0F3D, 0x0F3C).
1809paren_paren( 0x169B, 0x169C).
1810paren_paren( 0x169C, 0x169B).
1811paren_paren( 0x2045, 0x2046).
1812paren_paren( 0x2046, 0x2045).
1813paren_paren( 0x207D, 0x207E).
1814paren_paren( 0x207E, 0x207D).
1815paren_paren( 0x208D, 0x208E).
1816paren_paren( 0x208E, 0x208D).
1817paren_paren( 0x2308, 0x2309).
1818paren_paren( 0x2309, 0x2308).
1819paren_paren( 0x230A, 0x230B).
1820paren_paren( 0x230B, 0x230A).
1821paren_paren( 0x2329, 0x232A).
1822paren_paren( 0x232A, 0x2329).
1823paren_paren( 0x2768, 0x2769).
1824paren_paren( 0x2769, 0x2768).
1825paren_paren( 0x276A, 0x276B).
1826paren_paren( 0x276B, 0x276A).
1827paren_paren( 0x276C, 0x276D).
1828paren_paren( 0x276D, 0x276C).
1829paren_paren( 0x276E, 0x276F).
1830paren_paren( 0x276F, 0x276E).
1831paren_paren( 0x2770, 0x2771).
1832paren_paren( 0x2771, 0x2770).
1833paren_paren( 0x2772, 0x2773).
1834paren_paren( 0x2773, 0x2772).
1835paren_paren( 0x2774, 0x2775).
1836paren_paren( 0x2775, 0x2774).
1837paren_paren( 0x27C5, 0x27C6).
1838paren_paren( 0x27C6, 0x27C5).
1839paren_paren( 0x27E6, 0x27E7).
1840paren_paren( 0x27E7, 0x27E6).
1841paren_paren( 0x27E8, 0x27E9).
1842paren_paren( 0x27E9, 0x27E8).
1843paren_paren( 0x27EA, 0x27EB).
1844paren_paren( 0x27EB, 0x27EA).
1845paren_paren( 0x27EC, 0x27ED).
1846paren_paren( 0x27ED, 0x27EC).
1847paren_paren( 0x27EE, 0x27EF).
1848paren_paren( 0x27EF, 0x27EE).
1849paren_paren( 0x2983, 0x2984).
1850paren_paren( 0x2984, 0x2983).
1851paren_paren( 0x2985, 0x2986).
1852paren_paren( 0x2986, 0x2985).
1853paren_paren( 0x2987, 0x2988).
1854paren_paren( 0x2988, 0x2987).
1855paren_paren( 0x2989, 0x298A).
1856paren_paren( 0x298A, 0x2989).
1857paren_paren( 0x298B, 0x298C).
1858paren_paren( 0x298C, 0x298B).
1859paren_paren( 0x298D, 0x2990).
1860paren_paren( 0x298E, 0x298F).
1861paren_paren( 0x298F, 0x298E).
1862paren_paren( 0x2990, 0x298D).
1863paren_paren( 0x2991, 0x2992).
1864paren_paren( 0x2992, 0x2991).
1865paren_paren( 0x2993, 0x2994).
1866paren_paren( 0x2994, 0x2993).
1867paren_paren( 0x2995, 0x2996).
1868paren_paren( 0x2996, 0x2995).
1869paren_paren( 0x2997, 0x2998).
1870paren_paren( 0x2998, 0x2997).
1871paren_paren( 0x29D8, 0x29D9).
1872paren_paren( 0x29D9, 0x29D8).
1873paren_paren( 0x29DA, 0x29DB).
1874paren_paren( 0x29DB, 0x29DA).
1875paren_paren( 0x29FC, 0x29FD).
1876paren_paren( 0x29FD, 0x29FC).
1877paren_paren( 0x2E22, 0x2E23).
1878paren_paren( 0x2E23, 0x2E22).
1879paren_paren( 0x2E24, 0x2E25).
1880paren_paren( 0x2E25, 0x2E24).
1881paren_paren( 0x2E26, 0x2E27).
1882paren_paren( 0x2E27, 0x2E26).
1883paren_paren( 0x2E28, 0x2E29).
1884paren_paren( 0x2E29, 0x2E28).
1885paren_paren( 0x3008, 0x3009).
1886paren_paren( 0x3009, 0x3008).
1887paren_paren( 0x300A, 0x300B).
1888paren_paren( 0x300B, 0x300A).
1889paren_paren( 0x300C, 0x300D).
1890paren_paren( 0x300D, 0x300C).
1891paren_paren( 0x300E, 0x300F).
1892paren_paren( 0x300F, 0x300E).
1893paren_paren( 0x3010, 0x3011).
1894paren_paren( 0x3011, 0x3010).
1895paren_paren( 0x3014, 0x3015).
1896paren_paren( 0x3015, 0x3014).
1897paren_paren( 0x3016, 0x3017).
1898paren_paren( 0x3017, 0x3016).
1899paren_paren( 0x3018, 0x3019).
1900paren_paren( 0x3019, 0x3018).
1901paren_paren( 0x301A, 0x301B).
1902paren_paren( 0x301B, 0x301A).
1903paren_paren( 0xFE59, 0xFE5A).
1904paren_paren( 0xFE5A, 0xFE59).
1905paren_paren( 0xFE5B, 0xFE5C).
1906paren_paren( 0xFE5C, 0xFE5B).
1907paren_paren( 0xFE5D, 0xFE5E).
1908paren_paren( 0xFE5E, 0xFE5D).
1909paren_paren( 0xFF08, 0xFF09).
1910paren_paren( 0xFF09, 0xFF08).
1911paren_paren( 0xFF3B, 0xFF3D).
1912paren_paren( 0xFF3D, 0xFF3B).
1913paren_paren( 0xFF5B, 0xFF5D).
1914paren_paren( 0xFF5D, 0xFF5B).
1915paren_paren( 0xFF5F, 0xFF60).
1916paren_paren( 0xFF60, 0xFF5F).
1917paren_paren( 0xFF62, 0xFF63).
1918paren_paren( 0xFF63, 0xFF62).
1919
1920/** @} */
1921
char_type(?_Char_ , ?Type)
atom_codes(?Atom, ?Codes)
arg(+ N,+ T, A)
atomic(T)
nonvar( T)
between(+ Low:int, + High:int, ? Value:int)