1 /*-------------------------------------------------------------------------
2 This is an automatically generated file: do not edit
3 Generated by ubconfc at Fri Jun 13 20:47:01 BST 2008
4 -------------------------------------------------------------------------*/
8 /* Unicode general categories, listed in the same order as in the Unicode
9 * standard -- this must be the same order as in GHC.Unicode.
13 NUMCAT_LU, /* Letter, Uppercase */
14 NUMCAT_LL, /* Letter, Lowercase */
15 NUMCAT_LT, /* Letter, Titlecase */
16 NUMCAT_LM, /* Letter, Modifier */
17 NUMCAT_LO, /* Letter, Other */
18 NUMCAT_MN, /* Mark, Non-Spacing */
19 NUMCAT_MC, /* Mark, Spacing Combining */
20 NUMCAT_ME, /* Mark, Enclosing */
21 NUMCAT_ND, /* Number, Decimal */
22 NUMCAT_NL, /* Number, Letter */
23 NUMCAT_NO, /* Number, Other */
24 NUMCAT_PC, /* Punctuation, Connector */
25 NUMCAT_PD, /* Punctuation, Dash */
26 NUMCAT_PS, /* Punctuation, Open */
27 NUMCAT_PE, /* Punctuation, Close */
28 NUMCAT_PI, /* Punctuation, Initial quote */
29 NUMCAT_PF, /* Punctuation, Final quote */
30 NUMCAT_PO, /* Punctuation, Other */
31 NUMCAT_SM, /* Symbol, Math */
32 NUMCAT_SC, /* Symbol, Currency */
33 NUMCAT_SK, /* Symbol, Modifier */
34 NUMCAT_SO, /* Symbol, Other */
35 NUMCAT_ZS, /* Separator, Space */
36 NUMCAT_ZL, /* Separator, Line */
37 NUMCAT_ZP, /* Separator, Paragraph */
38 NUMCAT_CC, /* Other, Control */
39 NUMCAT_CF, /* Other, Format */
40 NUMCAT_CS, /* Other, Surrogate */
41 NUMCAT_CO, /* Other, Private Use */
42 NUMCAT_CN /* Other, Not Assigned */
47 unsigned int category;
48 unsigned int catnumber;
59 const struct _convrule_ *rule;
62 #define GENCAT_LO 262144
63 #define GENCAT_PC 2048
65 #define GENCAT_MN 2097152
67 #define GENCAT_NL 16777216
68 #define GENCAT_PF 131072
69 #define GENCAT_LT 524288
71 #define GENCAT_NO 65536
72 #define GENCAT_PI 16384
76 #define GENCAT_SK 1024
78 #define GENCAT_SO 8192
80 #define GENCAT_CF 32768
81 #define GENCAT_CO 268435456
82 #define GENCAT_ZL 33554432
83 #define GENCAT_CS 134217728
84 #define GENCAT_ZP 67108864
86 #define GENCAT_MC 8388608
87 #define GENCAT_ME 4194304
89 #define GENCAT_LL 4096
90 #define GENCAT_LM 1048576
91 #define MAX_UNI_CHAR 1114109
92 #define NUM_BLOCKS 2562
93 #define NUM_CONVBLOCKS 1202
94 #define NUM_SPACEBLOCKS 8
95 #define NUM_LAT1BLOCKS 63
97 static const struct _convrule_ rule155={GENCAT_LL, NUMCAT_LL, 1, -7264, 0, -7264};
98 static const struct _convrule_ rule36={GENCAT_LU, NUMCAT_LU, 1, 0, 211, 0};
99 static const struct _convrule_ rule25={GENCAT_LU, NUMCAT_LU, 1, 0, -121, 0};
100 static const struct _convrule_ rule18={GENCAT_LL, NUMCAT_LL, 1, 743, 0, 743};
101 static const struct _convrule_ rule105={GENCAT_LU, NUMCAT_LU, 1, 0, 80, 0};
102 static const struct _convrule_ rule50={GENCAT_LL, NUMCAT_LL, 1, -79, 0, -79};
103 static const struct _convrule_ rule103={GENCAT_LL, NUMCAT_LL, 1, -96, 0, -96};
104 static const struct _convrule_ rule76={GENCAT_LL, NUMCAT_LL, 1, -69, 0, -69};
105 static const struct _convrule_ rule123={GENCAT_LL, NUMCAT_LL, 1, 128, 0, 128};
106 static const struct _convrule_ rule116={GENCAT_LL, NUMCAT_LL, 1, -59, 0, -59};
107 static const struct _convrule_ rule99={GENCAT_LL, NUMCAT_LL, 1, -86, 0, -86};
108 static const struct _convrule_ rule38={GENCAT_LL, NUMCAT_LL, 1, 163, 0, 163};
109 static const struct _convrule_ rule110={GENCAT_LL, NUMCAT_LL, 1, -48, 0, -48};
110 static const struct _convrule_ rule130={GENCAT_LL, NUMCAT_LL, 1, -7205, 0, -7205};
111 static const struct _convrule_ rule125={GENCAT_LL, NUMCAT_LL, 1, 126, 0, 126};
112 static const struct _convrule_ rule94={GENCAT_LL, NUMCAT_LL, 1, -57, 0, -57};
113 static const struct _convrule_ rule156={GENCAT_LU, NUMCAT_LU, 1, 0, -35332, 0};
114 static const struct _convrule_ rule133={GENCAT_LU, NUMCAT_LU, 1, 0, -112, 0};
115 static const struct _convrule_ rule96={GENCAT_LL, NUMCAT_LL, 1, -47, 0, -47};
116 static const struct _convrule_ rule87={GENCAT_LL, NUMCAT_LL, 1, -38, 0, -38};
117 static const struct _convrule_ rule32={GENCAT_LU, NUMCAT_LU, 1, 0, 202, 0};
118 static const struct _convrule_ rule142={GENCAT_LL, NUMCAT_LL, 1, -28, 0, -28};
119 static const struct _convrule_ rule90={GENCAT_LL, NUMCAT_LL, 1, -64, 0, -64};
120 static const struct _convrule_ rule88={GENCAT_LL, NUMCAT_LL, 1, -37, 0, -37};
121 static const struct _convrule_ rule59={GENCAT_LU, NUMCAT_LU, 1, 0, 71, 0};
122 static const struct _convrule_ rule97={GENCAT_LL, NUMCAT_LL, 1, -54, 0, -54};
123 static const struct _convrule_ rule91={GENCAT_LL, NUMCAT_LL, 1, -63, 0, -63};
124 static const struct _convrule_ rule35={GENCAT_LL, NUMCAT_LL, 1, 97, 0, 97};
125 static const struct _convrule_ rule146={GENCAT_SO, NUMCAT_SO, 1, -26, 0, -26};
126 static const struct _convrule_ rule100={GENCAT_LL, NUMCAT_LL, 1, -80, 0, -80};
127 static const struct _convrule_ rule93={GENCAT_LL, NUMCAT_LL, 1, -62, 0, -62};
128 static const struct _convrule_ rule78={GENCAT_LL, NUMCAT_LL, 1, -71, 0, -71};
129 static const struct _convrule_ rule9={GENCAT_LU, NUMCAT_LU, 1, 0, 32, 0};
130 static const struct _convrule_ rule144={GENCAT_NL, NUMCAT_NL, 1, -16, 0, -16};
131 static const struct _convrule_ rule140={GENCAT_LU, NUMCAT_LU, 1, 0, -8262, 0};
132 static const struct _convrule_ rule124={GENCAT_LL, NUMCAT_LL, 1, 112, 0, 112};
133 static const struct _convrule_ rule121={GENCAT_LL, NUMCAT_LL, 1, 86, 0, 86};
134 static const struct _convrule_ rule40={GENCAT_LL, NUMCAT_LL, 1, 130, 0, 130};
135 static const struct _convrule_ rule20={GENCAT_LL, NUMCAT_LL, 1, 121, 0, 121};
136 static const struct _convrule_ rule108={GENCAT_LL, NUMCAT_LL, 1, -15, 0, -15};
137 static const struct _convrule_ rule12={GENCAT_LL, NUMCAT_LL, 1, -32, 0, -32};
138 static const struct _convrule_ rule82={GENCAT_MN, NUMCAT_MN, 1, 84, 0, 84};
139 static const struct _convrule_ rule160={GENCAT_LL, NUMCAT_LL, 1, -40, 0, -40};
140 static const struct _convrule_ rule122={GENCAT_LL, NUMCAT_LL, 1, 100, 0, 100};
141 static const struct _convrule_ rule120={GENCAT_LL, NUMCAT_LL, 1, 74, 0, 74};
142 static const struct _convrule_ rule89={GENCAT_LL, NUMCAT_LL, 1, -31, 0, -31};
143 static const struct _convrule_ rule56={GENCAT_LU, NUMCAT_LU, 1, 0, 10792, 0};
144 static const struct _convrule_ rule46={GENCAT_LL, NUMCAT_LL, 1, 56, 0, 56};
145 static const struct _convrule_ rule33={GENCAT_LU, NUMCAT_LU, 1, 0, 203, 0};
146 static const struct _convrule_ rule147={GENCAT_LU, NUMCAT_LU, 1, 0, -10743, 0};
147 static const struct _convrule_ rule39={GENCAT_LU, NUMCAT_LU, 1, 0, 213, 0};
148 static const struct _convrule_ rule154={GENCAT_LU, NUMCAT_LU, 1, 0, -10783, 0};
149 static const struct _convrule_ rule55={GENCAT_LU, NUMCAT_LU, 1, 0, -163, 0};
150 static const struct _convrule_ rule148={GENCAT_LU, NUMCAT_LU, 1, 0, -3814, 0};
151 static const struct _convrule_ rule139={GENCAT_LU, NUMCAT_LU, 1, 0, -8383, 0};
152 static const struct _convrule_ rule98={GENCAT_LL, NUMCAT_LL, 1, -8, 0, -8};
153 static const struct _convrule_ rule86={GENCAT_LU, NUMCAT_LU, 1, 0, 63, 0};
154 static const struct _convrule_ rule41={GENCAT_LU, NUMCAT_LU, 1, 0, 214, 0};
155 static const struct _convrule_ rule115={GENCAT_LL, NUMCAT_LL, 1, 3814, 0, 3814};
156 static const struct _convrule_ rule26={GENCAT_LL, NUMCAT_LL, 1, -300, 0, -300};
157 static const struct _convrule_ rule112={GENCAT_LU, NUMCAT_LU, 1, 0, 7264, 0};
158 static const struct _convrule_ rule22={GENCAT_LL, NUMCAT_LL, 1, -1, 0, -1};
159 static const struct _convrule_ rule117={GENCAT_LU, NUMCAT_LU, 1, 0, -7615, 0};
160 static const struct _convrule_ rule49={GENCAT_LL, NUMCAT_LL, 1, -2, 0, -1};
161 static const struct _convrule_ rule128={GENCAT_LU, NUMCAT_LU, 1, 0, -74, 0};
162 static const struct _convrule_ rule85={GENCAT_LU, NUMCAT_LU, 1, 0, 64, 0};
163 static const struct _convrule_ rule30={GENCAT_LU, NUMCAT_LU, 1, 0, 205, 0};
164 static const struct _convrule_ rule114={GENCAT_LL, NUMCAT_LL, 1, 35332, 0, 35332};
165 static const struct _convrule_ rule107={GENCAT_LU, NUMCAT_LU, 1, 0, 15, 0};
166 static const struct _convrule_ rule127={GENCAT_LL, NUMCAT_LL, 1, 9, 0, 9};
167 static const struct _convrule_ rule118={GENCAT_LL, NUMCAT_LL, 1, 8, 0, 8};
168 static const struct _convrule_ rule92={GENCAT_LU, NUMCAT_LU, 1, 0, 8, 0};
169 static const struct _convrule_ rule54={GENCAT_LU, NUMCAT_LU, 1, 0, 10795, 0};
170 static const struct _convrule_ rule29={GENCAT_LU, NUMCAT_LU, 1, 0, 206, 0};
171 static const struct _convrule_ rule135={GENCAT_LU, NUMCAT_LU, 1, 0, -126, 0};
172 static const struct _convrule_ rule101={GENCAT_LL, NUMCAT_LL, 1, 7, 0, 7};
173 static const struct _convrule_ rule57={GENCAT_LU, NUMCAT_LU, 1, 0, -195, 0};
174 static const struct _convrule_ rule143={GENCAT_NL, NUMCAT_NL, 1, 0, 16, 0};
175 static const struct _convrule_ rule145={GENCAT_SO, NUMCAT_SO, 1, 0, 26, 0};
176 static const struct _convrule_ rule104={GENCAT_LU, NUMCAT_LU, 1, 0, -7, 0};
177 static const struct _convrule_ rule52={GENCAT_LU, NUMCAT_LU, 1, 0, -56, 0};
178 static const struct _convrule_ rule150={GENCAT_LL, NUMCAT_LL, 1, -10795, 0, -10795};
179 static const struct _convrule_ rule149={GENCAT_LU, NUMCAT_LU, 1, 0, -10727, 0};
180 static const struct _convrule_ rule138={GENCAT_LU, NUMCAT_LU, 1, 0, -7517, 0};
181 static const struct _convrule_ rule34={GENCAT_LU, NUMCAT_LU, 1, 0, 207, 0};
182 static const struct _convrule_ rule158={GENCAT_CO, NUMCAT_CO, 0, 0, 0, 0};
183 static const struct _convrule_ rule81={GENCAT_MN, NUMCAT_MN, 0, 0, 0, 0};
184 static const struct _convrule_ rule16={GENCAT_CF, NUMCAT_CF, 0, 0, 0, 0};
185 static const struct _convrule_ rule45={GENCAT_LO, NUMCAT_LO, 0, 0, 0, 0};
186 static const struct _convrule_ rule13={GENCAT_SO, NUMCAT_SO, 0, 0, 0, 0};
187 static const struct _convrule_ rule8={GENCAT_ND, NUMCAT_ND, 0, 0, 0, 0};
188 static const struct _convrule_ rule14={GENCAT_LL, NUMCAT_LL, 0, 0, 0, 0};
189 static const struct _convrule_ rule95={GENCAT_LU, NUMCAT_LU, 0, 0, 0, 0};
190 static const struct _convrule_ rule6={GENCAT_SM, NUMCAT_SM, 0, 0, 0, 0};
191 static const struct _convrule_ rule17={GENCAT_NO, NUMCAT_NO, 0, 0, 0, 0};
192 static const struct _convrule_ rule111={GENCAT_MC, NUMCAT_MC, 0, 0, 0, 0};
193 static const struct _convrule_ rule2={GENCAT_PO, NUMCAT_PO, 0, 0, 0, 0};
194 static const struct _convrule_ rule113={GENCAT_NL, NUMCAT_NL, 0, 0, 0, 0};
195 static const struct _convrule_ rule3={GENCAT_SC, NUMCAT_SC, 0, 0, 0, 0};
196 static const struct _convrule_ rule10={GENCAT_SK, NUMCAT_SK, 0, 0, 0, 0};
197 static const struct _convrule_ rule80={GENCAT_LM, NUMCAT_LM, 0, 0, 0, 0};
198 static const struct _convrule_ rule5={GENCAT_PE, NUMCAT_PE, 0, 0, 0, 0};
199 static const struct _convrule_ rule4={GENCAT_PS, NUMCAT_PS, 0, 0, 0, 0};
200 static const struct _convrule_ rule11={GENCAT_PC, NUMCAT_PC, 0, 0, 0, 0};
201 static const struct _convrule_ rule7={GENCAT_PD, NUMCAT_PD, 0, 0, 0, 0};
202 static const struct _convrule_ rule157={GENCAT_CS, NUMCAT_CS, 0, 0, 0, 0};
203 static const struct _convrule_ rule106={GENCAT_ME, NUMCAT_ME, 0, 0, 0, 0};
204 static const struct _convrule_ rule1={GENCAT_ZS, NUMCAT_ZS, 0, 0, 0, 0};
205 static const struct _convrule_ rule19={GENCAT_PF, NUMCAT_PF, 0, 0, 0, 0};
206 static const struct _convrule_ rule15={GENCAT_PI, NUMCAT_PI, 0, 0, 0, 0};
207 static const struct _convrule_ rule137={GENCAT_ZP, NUMCAT_ZP, 0, 0, 0, 0};
208 static const struct _convrule_ rule136={GENCAT_ZL, NUMCAT_ZL, 0, 0, 0, 0};
209 static const struct _convrule_ rule131={GENCAT_LU, NUMCAT_LU, 1, 0, -86, 0};
210 static const struct _convrule_ rule43={GENCAT_LU, NUMCAT_LU, 1, 0, 217, 0};
211 static const struct _convrule_ rule0={GENCAT_CC, NUMCAT_CC, 0, 0, 0, 0};
212 static const struct _convrule_ rule151={GENCAT_LL, NUMCAT_LL, 1, -10792, 0, -10792};
213 static const struct _convrule_ rule71={GENCAT_LL, NUMCAT_LL, 1, 10749, 0, 10749};
214 static const struct _convrule_ rule84={GENCAT_LU, NUMCAT_LU, 1, 0, 37, 0};
215 static const struct _convrule_ rule60={GENCAT_LL, NUMCAT_LL, 1, 10783, 0, 10783};
216 static const struct _convrule_ rule119={GENCAT_LU, NUMCAT_LU, 1, 0, -8, 0};
217 static const struct _convrule_ rule126={GENCAT_LT, NUMCAT_LT, 1, 0, -8, 0};
218 static const struct _convrule_ rule79={GENCAT_LL, NUMCAT_LL, 1, -219, 0, -219};
219 static const struct _convrule_ rule74={GENCAT_LL, NUMCAT_LL, 1, 10727, 0, 10727};
220 static const struct _convrule_ rule75={GENCAT_LL, NUMCAT_LL, 1, -218, 0, -218};
221 static const struct _convrule_ rule68={GENCAT_LL, NUMCAT_LL, 1, -209, 0, -209};
222 static const struct _convrule_ rule61={GENCAT_LL, NUMCAT_LL, 1, 10780, 0, 10780};
223 static const struct _convrule_ rule48={GENCAT_LT, NUMCAT_LT, 1, -1, 1, 0};
224 static const struct _convrule_ rule21={GENCAT_LU, NUMCAT_LU, 1, 0, 1, 0};
225 static const struct _convrule_ rule134={GENCAT_LU, NUMCAT_LU, 1, 0, -128, 0};
226 static const struct _convrule_ rule77={GENCAT_LL, NUMCAT_LL, 1, -217, 0, -217};
227 static const struct _convrule_ rule70={GENCAT_LL, NUMCAT_LL, 1, 10743, 0, 10743};
228 static const struct _convrule_ rule42={GENCAT_LU, NUMCAT_LU, 1, 0, 218, 0};
229 static const struct _convrule_ rule67={GENCAT_LL, NUMCAT_LL, 1, -207, 0, -207};
230 static const struct _convrule_ rule51={GENCAT_LU, NUMCAT_LU, 1, 0, -97, 0};
231 static const struct _convrule_ rule141={GENCAT_LU, NUMCAT_LU, 1, 0, 28, 0};
232 static const struct _convrule_ rule63={GENCAT_LL, NUMCAT_LL, 1, -206, 0, -206};
233 static const struct _convrule_ rule83={GENCAT_LU, NUMCAT_LU, 1, 0, 38, 0};
234 static const struct _convrule_ rule73={GENCAT_LL, NUMCAT_LL, 1, -214, 0, -214};
235 static const struct _convrule_ rule64={GENCAT_LL, NUMCAT_LL, 1, -205, 0, -205};
236 static const struct _convrule_ rule24={GENCAT_LL, NUMCAT_LL, 1, -232, 0, -232};
237 static const struct _convrule_ rule109={GENCAT_LU, NUMCAT_LU, 1, 0, 48, 0};
238 static const struct _convrule_ rule129={GENCAT_LT, NUMCAT_LT, 1, 0, -9, 0};
239 static const struct _convrule_ rule72={GENCAT_LL, NUMCAT_LL, 1, -213, 0, -213};
240 static const struct _convrule_ rule66={GENCAT_LL, NUMCAT_LL, 1, -203, 0, -203};
241 static const struct _convrule_ rule132={GENCAT_LU, NUMCAT_LU, 1, 0, -100, 0};
242 static const struct _convrule_ rule69={GENCAT_LL, NUMCAT_LL, 1, -211, 0, -211};
243 static const struct _convrule_ rule65={GENCAT_LL, NUMCAT_LL, 1, -202, 0, -202};
244 static const struct _convrule_ rule47={GENCAT_LU, NUMCAT_LU, 1, 0, 2, 1};
245 static const struct _convrule_ rule37={GENCAT_LU, NUMCAT_LU, 1, 0, 209, 0};
246 static const struct _convrule_ rule153={GENCAT_LU, NUMCAT_LU, 1, 0, -10749, 0};
247 static const struct _convrule_ rule62={GENCAT_LL, NUMCAT_LL, 1, -210, 0, -210};
248 static const struct _convrule_ rule44={GENCAT_LU, NUMCAT_LU, 1, 0, 219, 0};
249 static const struct _convrule_ rule28={GENCAT_LU, NUMCAT_LU, 1, 0, 210, 0};
250 static const struct _convrule_ rule53={GENCAT_LU, NUMCAT_LU, 1, 0, -130, 0};
251 static const struct _convrule_ rule159={GENCAT_LU, NUMCAT_LU, 1, 0, 40, 0};
252 static const struct _convrule_ rule152={GENCAT_LU, NUMCAT_LU, 1, 0, -10780, 0};
253 static const struct _convrule_ rule102={GENCAT_LU, NUMCAT_LU, 1, 0, -60, 0};
254 static const struct _convrule_ rule58={GENCAT_LU, NUMCAT_LU, 1, 0, 69, 0};
255 static const struct _convrule_ rule31={GENCAT_LU, NUMCAT_LU, 1, 0, 79, 0};
256 static const struct _convrule_ rule27={GENCAT_LL, NUMCAT_LL, 1, 195, 0, 195};
257 static const struct _convrule_ rule23={GENCAT_LU, NUMCAT_LU, 1, 0, -199, 0};
258 static const struct _charblock_ allchars[]={
774 {1024, 16, &rule105},
777 {1104, 16, &rule100},
969 {1329, 38, &rule109},
972 {1377, 38, &rule110},
1000 {1611, 20, &rule81},
1005 {1649, 99, &rule45},
1010 {1758, 1, &rule106},
1025 {1810, 30, &rule45},
1026 {1840, 27, &rule81},
1027 {1869, 89, &rule45},
1028 {1958, 11, &rule81},
1031 {1994, 33, &rule45},
1038 {2307, 1, &rule111},
1039 {2308, 54, &rule45},
1042 {2366, 3, &rule111},
1044 {2377, 4, &rule111},
1048 {2392, 10, &rule45},
1057 {2434, 2, &rule111},
1060 {2451, 22, &rule45},
1066 {2494, 3, &rule111},
1068 {2503, 2, &rule111},
1069 {2507, 2, &rule111},
1072 {2519, 1, &rule111},
1082 {2563, 1, &rule111},
1085 {2579, 22, &rule45},
1091 {2622, 3, &rule111},
1103 {2691, 1, &rule111},
1106 {2707, 22, &rule45},
1112 {2750, 3, &rule111},
1115 {2761, 1, &rule111},
1116 {2763, 2, &rule111},
1124 {2818, 2, &rule111},
1127 {2835, 22, &rule45},
1133 {2878, 1, &rule111},
1135 {2880, 1, &rule111},
1137 {2887, 2, &rule111},
1138 {2891, 2, &rule111},
1141 {2903, 1, &rule111},
1158 {2990, 12, &rule45},
1159 {3006, 2, &rule111},
1161 {3009, 2, &rule111},
1162 {3014, 3, &rule111},
1163 {3018, 3, &rule111},
1166 {3031, 1, &rule111},
1172 {3073, 3, &rule111},
1175 {3090, 23, &rule45},
1176 {3114, 10, &rule45},
1180 {3137, 4, &rule111},
1190 {3202, 2, &rule111},
1193 {3218, 23, &rule45},
1194 {3242, 10, &rule45},
1198 {3262, 1, &rule111},
1200 {3264, 5, &rule111},
1202 {3271, 2, &rule111},
1203 {3274, 2, &rule111},
1205 {3285, 2, &rule111},
1211 {3330, 2, &rule111},
1214 {3346, 23, &rule45},
1215 {3370, 16, &rule45},
1217 {3390, 3, &rule111},
1219 {3398, 3, &rule111},
1220 {3402, 3, &rule111},
1222 {3415, 1, &rule111},
1229 {3458, 2, &rule111},
1230 {3461, 18, &rule45},
1231 {3482, 24, &rule45},
1236 {3535, 3, &rule111},
1239 {3544, 8, &rule111},
1240 {3570, 2, &rule111},
1242 {3585, 48, &rule45},
1282 {3882, 10, &rule17},
1293 {3902, 2, &rule111},
1295 {3913, 36, &rule45},
1296 {3953, 14, &rule81},
1297 {3967, 1, &rule111},
1303 {3993, 36, &rule81},
1309 {4096, 43, &rule45},
1310 {4139, 2, &rule111},
1312 {4145, 1, &rule111},
1314 {4152, 1, &rule111},
1316 {4155, 2, &rule111},
1322 {4182, 2, &rule111},
1327 {4194, 3, &rule111},
1329 {4199, 7, &rule111},
1332 {4213, 13, &rule45},
1334 {4227, 2, &rule111},
1336 {4231, 6, &rule111},
1339 {4239, 1, &rule111},
1342 {4256, 38, &rule112},
1343 {4304, 43, &rule45},
1346 {4352, 90, &rule45},
1347 {4447, 68, &rule45},
1348 {4520, 82, &rule45},
1349 {4608, 73, &rule45},
1354 {4704, 41, &rule45},
1356 {4752, 33, &rule45},
1361 {4808, 15, &rule45},
1362 {4824, 57, &rule45},
1364 {4888, 67, &rule45},
1368 {4969, 20, &rule17},
1369 {4992, 16, &rule45},
1370 {5008, 10, &rule13},
1371 {5024, 85, &rule45},
1372 {5121, 620, &rule45},
1376 {5761, 26, &rule45},
1379 {5792, 75, &rule45},
1381 {5870, 3, &rule113},
1382 {5888, 13, &rule45},
1385 {5920, 18, &rule45},
1388 {5952, 18, &rule45},
1390 {5984, 13, &rule45},
1393 {6016, 52, &rule45},
1395 {6070, 1, &rule111},
1397 {6078, 8, &rule111},
1399 {6087, 2, &rule111},
1400 {6089, 11, &rule81},
1408 {6128, 10, &rule17},
1415 {6176, 35, &rule45},
1417 {6212, 52, &rule45},
1418 {6272, 41, &rule45},
1421 {6400, 29, &rule45},
1423 {6435, 4, &rule111},
1425 {6441, 3, &rule111},
1426 {6448, 2, &rule111},
1428 {6451, 6, &rule111},
1433 {6480, 30, &rule45},
1435 {6528, 42, &rule45},
1436 {6576, 17, &rule111},
1438 {6600, 2, &rule111},
1441 {6624, 32, &rule13},
1442 {6656, 23, &rule45},
1444 {6681, 3, &rule111},
1447 {6916, 1, &rule111},
1448 {6917, 47, &rule45},
1450 {6965, 1, &rule111},
1452 {6971, 1, &rule111},
1454 {6973, 5, &rule111},
1456 {6979, 2, &rule111},
1460 {7009, 10, &rule13},
1464 {7042, 1, &rule111},
1465 {7043, 30, &rule45},
1466 {7073, 1, &rule111},
1468 {7078, 2, &rule111},
1470 {7082, 1, &rule111},
1473 {7168, 36, &rule45},
1474 {7204, 8, &rule111},
1476 {7220, 2, &rule111},
1482 {7258, 30, &rule45},
1485 {7424, 44, &rule14},
1486 {7468, 54, &rule80},
1487 {7522, 22, &rule14},
1489 {7545, 1, &rule114},
1491 {7549, 1, &rule115},
1492 {7550, 29, &rule14},
1493 {7579, 37, &rule80},
1494 {7616, 39, &rule81},
1647 {7835, 1, &rule116},
1649 {7838, 1, &rule117},
1747 {7936, 8, &rule118},
1748 {7944, 8, &rule119},
1749 {7952, 6, &rule118},
1750 {7960, 6, &rule119},
1751 {7968, 8, &rule118},
1752 {7976, 8, &rule119},
1753 {7984, 8, &rule118},
1754 {7992, 8, &rule119},
1755 {8000, 6, &rule118},
1756 {8008, 6, &rule119},
1758 {8017, 1, &rule118},
1760 {8019, 1, &rule118},
1762 {8021, 1, &rule118},
1764 {8023, 1, &rule118},
1765 {8025, 1, &rule119},
1766 {8027, 1, &rule119},
1767 {8029, 1, &rule119},
1768 {8031, 1, &rule119},
1769 {8032, 8, &rule118},
1770 {8040, 8, &rule119},
1771 {8048, 2, &rule120},
1772 {8050, 4, &rule121},
1773 {8054, 2, &rule122},
1774 {8056, 2, &rule123},
1775 {8058, 2, &rule124},
1776 {8060, 2, &rule125},
1777 {8064, 8, &rule118},
1778 {8072, 8, &rule126},
1779 {8080, 8, &rule118},
1780 {8088, 8, &rule126},
1781 {8096, 8, &rule118},
1782 {8104, 8, &rule126},
1783 {8112, 2, &rule118},
1785 {8115, 1, &rule127},
1788 {8120, 2, &rule119},
1789 {8122, 2, &rule128},
1790 {8124, 1, &rule129},
1792 {8126, 1, &rule130},
1795 {8131, 1, &rule127},
1798 {8136, 4, &rule131},
1799 {8140, 1, &rule129},
1801 {8144, 2, &rule118},
1804 {8152, 2, &rule119},
1805 {8154, 2, &rule132},
1807 {8160, 2, &rule118},
1809 {8165, 1, &rule101},
1811 {8168, 2, &rule119},
1812 {8170, 2, &rule133},
1813 {8172, 1, &rule104},
1816 {8179, 1, &rule127},
1819 {8184, 2, &rule134},
1820 {8186, 2, &rule135},
1821 {8188, 1, &rule129},
1835 {8232, 1, &rule136},
1836 {8233, 1, &rule137},
1863 {8320, 10, &rule17},
1869 {8400, 13, &rule81},
1870 {8413, 4, &rule106},
1872 {8418, 3, &rule106},
1873 {8421, 12, &rule81},
1891 {8486, 1, &rule138},
1895 {8490, 1, &rule139},
1896 {8491, 1, &rule140},
1901 {8498, 1, &rule141},
1915 {8526, 1, &rule142},
1917 {8531, 13, &rule17},
1918 {8544, 16, &rule143},
1919 {8560, 16, &rule144},
1920 {8576, 3, &rule113},
1923 {8581, 4, &rule113},
1935 {8623, 31, &rule13},
1941 {8661, 31, &rule13},
1942 {8692, 268, &rule6},
1945 {8972, 20, &rule13},
1950 {9003, 81, &rule13},
1952 {9085, 30, &rule13},
1954 {9140, 40, &rule13},
1957 {9216, 39, &rule13},
1958 {9280, 11, &rule13},
1959 {9312, 60, &rule17},
1960 {9372, 26, &rule13},
1961 {9398, 26, &rule145},
1962 {9424, 26, &rule146},
1963 {9450, 22, &rule17},
1964 {9472, 183, &rule13},
1968 {9666, 54, &rule13},
1970 {9728, 111, &rule13},
1972 {9840, 46, &rule13},
1973 {9888, 29, &rule13},
1977 {9996, 28, &rule13},
1978 {10025, 35, &rule13},
1979 {10061, 1, &rule13},
1980 {10063, 4, &rule13},
1981 {10070, 1, &rule13},
1982 {10072, 7, &rule13},
1983 {10081, 7, &rule13},
1998 {10102, 30, &rule17},
1999 {10132, 1, &rule13},
2000 {10136, 24, &rule13},
2001 {10161, 14, &rule13},
2007 {10192, 22, &rule6},
2018 {10224, 16, &rule6},
2019 {10240, 256, &rule13},
2020 {10496, 131, &rule6},
2043 {10649, 63, &rule6},
2048 {10716, 32, &rule6},
2051 {10750, 258, &rule6},
2052 {11008, 48, &rule13},
2053 {11056, 21, &rule6},
2054 {11077, 2, &rule13},
2056 {11088, 5, &rule13},
2057 {11264, 47, &rule109},
2058 {11312, 47, &rule110},
2059 {11360, 1, &rule21},
2060 {11361, 1, &rule22},
2061 {11362, 1, &rule147},
2062 {11363, 1, &rule148},
2063 {11364, 1, &rule149},
2064 {11365, 1, &rule150},
2065 {11366, 1, &rule151},
2066 {11367, 1, &rule21},
2067 {11368, 1, &rule22},
2068 {11369, 1, &rule21},
2069 {11370, 1, &rule22},
2070 {11371, 1, &rule21},
2071 {11372, 1, &rule22},
2072 {11373, 1, &rule152},
2073 {11374, 1, &rule153},
2074 {11375, 1, &rule154},
2075 {11377, 1, &rule14},
2076 {11378, 1, &rule21},
2077 {11379, 1, &rule22},
2078 {11380, 1, &rule14},
2079 {11381, 1, &rule21},
2080 {11382, 1, &rule22},
2081 {11383, 6, &rule14},
2082 {11389, 1, &rule80},
2083 {11392, 1, &rule21},
2084 {11393, 1, &rule22},
2085 {11394, 1, &rule21},
2086 {11395, 1, &rule22},
2087 {11396, 1, &rule21},
2088 {11397, 1, &rule22},
2089 {11398, 1, &rule21},
2090 {11399, 1, &rule22},
2091 {11400, 1, &rule21},
2092 {11401, 1, &rule22},
2093 {11402, 1, &rule21},
2094 {11403, 1, &rule22},
2095 {11404, 1, &rule21},
2096 {11405, 1, &rule22},
2097 {11406, 1, &rule21},
2098 {11407, 1, &rule22},
2099 {11408, 1, &rule21},
2100 {11409, 1, &rule22},
2101 {11410, 1, &rule21},
2102 {11411, 1, &rule22},
2103 {11412, 1, &rule21},
2104 {11413, 1, &rule22},
2105 {11414, 1, &rule21},
2106 {11415, 1, &rule22},
2107 {11416, 1, &rule21},
2108 {11417, 1, &rule22},
2109 {11418, 1, &rule21},
2110 {11419, 1, &rule22},
2111 {11420, 1, &rule21},
2112 {11421, 1, &rule22},
2113 {11422, 1, &rule21},
2114 {11423, 1, &rule22},
2115 {11424, 1, &rule21},
2116 {11425, 1, &rule22},
2117 {11426, 1, &rule21},
2118 {11427, 1, &rule22},
2119 {11428, 1, &rule21},
2120 {11429, 1, &rule22},
2121 {11430, 1, &rule21},
2122 {11431, 1, &rule22},
2123 {11432, 1, &rule21},
2124 {11433, 1, &rule22},
2125 {11434, 1, &rule21},
2126 {11435, 1, &rule22},
2127 {11436, 1, &rule21},
2128 {11437, 1, &rule22},
2129 {11438, 1, &rule21},
2130 {11439, 1, &rule22},
2131 {11440, 1, &rule21},
2132 {11441, 1, &rule22},
2133 {11442, 1, &rule21},
2134 {11443, 1, &rule22},
2135 {11444, 1, &rule21},
2136 {11445, 1, &rule22},
2137 {11446, 1, &rule21},
2138 {11447, 1, &rule22},
2139 {11448, 1, &rule21},
2140 {11449, 1, &rule22},
2141 {11450, 1, &rule21},
2142 {11451, 1, &rule22},
2143 {11452, 1, &rule21},
2144 {11453, 1, &rule22},
2145 {11454, 1, &rule21},
2146 {11455, 1, &rule22},
2147 {11456, 1, &rule21},
2148 {11457, 1, &rule22},
2149 {11458, 1, &rule21},
2150 {11459, 1, &rule22},
2151 {11460, 1, &rule21},
2152 {11461, 1, &rule22},
2153 {11462, 1, &rule21},
2154 {11463, 1, &rule22},
2155 {11464, 1, &rule21},
2156 {11465, 1, &rule22},
2157 {11466, 1, &rule21},
2158 {11467, 1, &rule22},
2159 {11468, 1, &rule21},
2160 {11469, 1, &rule22},
2161 {11470, 1, &rule21},
2162 {11471, 1, &rule22},
2163 {11472, 1, &rule21},
2164 {11473, 1, &rule22},
2165 {11474, 1, &rule21},
2166 {11475, 1, &rule22},
2167 {11476, 1, &rule21},
2168 {11477, 1, &rule22},
2169 {11478, 1, &rule21},
2170 {11479, 1, &rule22},
2171 {11480, 1, &rule21},
2172 {11481, 1, &rule22},
2173 {11482, 1, &rule21},
2174 {11483, 1, &rule22},
2175 {11484, 1, &rule21},
2176 {11485, 1, &rule22},
2177 {11486, 1, &rule21},
2178 {11487, 1, &rule22},
2179 {11488, 1, &rule21},
2180 {11489, 1, &rule22},
2181 {11490, 1, &rule21},
2182 {11491, 1, &rule22},
2183 {11492, 1, &rule14},
2184 {11493, 6, &rule13},
2186 {11517, 1, &rule17},
2188 {11520, 38, &rule155},
2189 {11568, 54, &rule45},
2190 {11631, 1, &rule80},
2191 {11648, 23, &rule45},
2192 {11680, 7, &rule45},
2193 {11688, 7, &rule45},
2194 {11696, 7, &rule45},
2195 {11704, 7, &rule45},
2196 {11712, 7, &rule45},
2197 {11720, 7, &rule45},
2198 {11728, 7, &rule45},
2199 {11736, 7, &rule45},
2200 {11744, 32, &rule81},
2202 {11778, 1, &rule15},
2203 {11779, 1, &rule19},
2204 {11780, 1, &rule15},
2205 {11781, 1, &rule19},
2207 {11785, 1, &rule15},
2208 {11786, 1, &rule19},
2210 {11788, 1, &rule15},
2211 {11789, 1, &rule19},
2217 {11804, 1, &rule15},
2218 {11805, 1, &rule19},
2220 {11808, 1, &rule15},
2221 {11809, 1, &rule19},
2231 {11823, 1, &rule80},
2233 {11904, 26, &rule13},
2234 {11931, 89, &rule13},
2235 {12032, 214, &rule13},
2236 {12272, 12, &rule13},
2239 {12292, 1, &rule13},
2240 {12293, 1, &rule80},
2241 {12294, 1, &rule45},
2242 {12295, 1, &rule113},
2253 {12306, 2, &rule13},
2265 {12320, 1, &rule13},
2266 {12321, 9, &rule113},
2267 {12330, 6, &rule81},
2269 {12337, 5, &rule80},
2270 {12342, 2, &rule13},
2271 {12344, 3, &rule113},
2272 {12347, 1, &rule80},
2273 {12348, 1, &rule45},
2275 {12350, 2, &rule13},
2276 {12353, 86, &rule45},
2277 {12441, 2, &rule81},
2278 {12443, 2, &rule10},
2279 {12445, 2, &rule80},
2280 {12447, 1, &rule45},
2282 {12449, 90, &rule45},
2284 {12540, 3, &rule80},
2285 {12543, 1, &rule45},
2286 {12549, 41, &rule45},
2287 {12593, 94, &rule45},
2288 {12688, 2, &rule13},
2289 {12690, 4, &rule17},
2290 {12694, 10, &rule13},
2291 {12704, 24, &rule45},
2292 {12736, 36, &rule13},
2293 {12784, 16, &rule45},
2294 {12800, 31, &rule13},
2295 {12832, 10, &rule17},
2296 {12842, 26, &rule13},
2297 {12880, 1, &rule13},
2298 {12881, 15, &rule17},
2299 {12896, 32, &rule13},
2300 {12928, 10, &rule17},
2301 {12938, 39, &rule13},
2302 {12977, 15, &rule17},
2303 {12992, 63, &rule13},
2304 {13056, 256, &rule13},
2305 {13312, 6582, &rule45},
2306 {19904, 64, &rule13},
2307 {19968, 20932, &rule45},
2308 {40960, 21, &rule45},
2309 {40981, 1, &rule80},
2310 {40982, 1143, &rule45},
2311 {42128, 55, &rule13},
2312 {42240, 268, &rule45},
2313 {42508, 1, &rule80},
2315 {42512, 16, &rule45},
2316 {42528, 10, &rule8},
2317 {42538, 2, &rule45},
2318 {42560, 1, &rule21},
2319 {42561, 1, &rule22},
2320 {42562, 1, &rule21},
2321 {42563, 1, &rule22},
2322 {42564, 1, &rule21},
2323 {42565, 1, &rule22},
2324 {42566, 1, &rule21},
2325 {42567, 1, &rule22},
2326 {42568, 1, &rule21},
2327 {42569, 1, &rule22},
2328 {42570, 1, &rule21},
2329 {42571, 1, &rule22},
2330 {42572, 1, &rule21},
2331 {42573, 1, &rule22},
2332 {42574, 1, &rule21},
2333 {42575, 1, &rule22},
2334 {42576, 1, &rule21},
2335 {42577, 1, &rule22},
2336 {42578, 1, &rule21},
2337 {42579, 1, &rule22},
2338 {42580, 1, &rule21},
2339 {42581, 1, &rule22},
2340 {42582, 1, &rule21},
2341 {42583, 1, &rule22},
2342 {42584, 1, &rule21},
2343 {42585, 1, &rule22},
2344 {42586, 1, &rule21},
2345 {42587, 1, &rule22},
2346 {42588, 1, &rule21},
2347 {42589, 1, &rule22},
2348 {42590, 1, &rule21},
2349 {42591, 1, &rule22},
2350 {42594, 1, &rule21},
2351 {42595, 1, &rule22},
2352 {42596, 1, &rule21},
2353 {42597, 1, &rule22},
2354 {42598, 1, &rule21},
2355 {42599, 1, &rule22},
2356 {42600, 1, &rule21},
2357 {42601, 1, &rule22},
2358 {42602, 1, &rule21},
2359 {42603, 1, &rule22},
2360 {42604, 1, &rule21},
2361 {42605, 1, &rule22},
2362 {42606, 1, &rule45},
2363 {42607, 1, &rule81},
2364 {42608, 3, &rule106},
2366 {42620, 2, &rule81},
2368 {42623, 1, &rule80},
2369 {42624, 1, &rule21},
2370 {42625, 1, &rule22},
2371 {42626, 1, &rule21},
2372 {42627, 1, &rule22},
2373 {42628, 1, &rule21},
2374 {42629, 1, &rule22},
2375 {42630, 1, &rule21},
2376 {42631, 1, &rule22},
2377 {42632, 1, &rule21},
2378 {42633, 1, &rule22},
2379 {42634, 1, &rule21},
2380 {42635, 1, &rule22},
2381 {42636, 1, &rule21},
2382 {42637, 1, &rule22},
2383 {42638, 1, &rule21},
2384 {42639, 1, &rule22},
2385 {42640, 1, &rule21},
2386 {42641, 1, &rule22},
2387 {42642, 1, &rule21},
2388 {42643, 1, &rule22},
2389 {42644, 1, &rule21},
2390 {42645, 1, &rule22},
2391 {42646, 1, &rule21},
2392 {42647, 1, &rule22},
2393 {42752, 23, &rule10},
2394 {42775, 9, &rule80},
2395 {42784, 2, &rule10},
2396 {42786, 1, &rule21},
2397 {42787, 1, &rule22},
2398 {42788, 1, &rule21},
2399 {42789, 1, &rule22},
2400 {42790, 1, &rule21},
2401 {42791, 1, &rule22},
2402 {42792, 1, &rule21},
2403 {42793, 1, &rule22},
2404 {42794, 1, &rule21},
2405 {42795, 1, &rule22},
2406 {42796, 1, &rule21},
2407 {42797, 1, &rule22},
2408 {42798, 1, &rule21},
2409 {42799, 1, &rule22},
2410 {42800, 2, &rule14},
2411 {42802, 1, &rule21},
2412 {42803, 1, &rule22},
2413 {42804, 1, &rule21},
2414 {42805, 1, &rule22},
2415 {42806, 1, &rule21},
2416 {42807, 1, &rule22},
2417 {42808, 1, &rule21},
2418 {42809, 1, &rule22},
2419 {42810, 1, &rule21},
2420 {42811, 1, &rule22},
2421 {42812, 1, &rule21},
2422 {42813, 1, &rule22},
2423 {42814, 1, &rule21},
2424 {42815, 1, &rule22},
2425 {42816, 1, &rule21},
2426 {42817, 1, &rule22},
2427 {42818, 1, &rule21},
2428 {42819, 1, &rule22},
2429 {42820, 1, &rule21},
2430 {42821, 1, &rule22},
2431 {42822, 1, &rule21},
2432 {42823, 1, &rule22},
2433 {42824, 1, &rule21},
2434 {42825, 1, &rule22},
2435 {42826, 1, &rule21},
2436 {42827, 1, &rule22},
2437 {42828, 1, &rule21},
2438 {42829, 1, &rule22},
2439 {42830, 1, &rule21},
2440 {42831, 1, &rule22},
2441 {42832, 1, &rule21},
2442 {42833, 1, &rule22},
2443 {42834, 1, &rule21},
2444 {42835, 1, &rule22},
2445 {42836, 1, &rule21},
2446 {42837, 1, &rule22},
2447 {42838, 1, &rule21},
2448 {42839, 1, &rule22},
2449 {42840, 1, &rule21},
2450 {42841, 1, &rule22},
2451 {42842, 1, &rule21},
2452 {42843, 1, &rule22},
2453 {42844, 1, &rule21},
2454 {42845, 1, &rule22},
2455 {42846, 1, &rule21},
2456 {42847, 1, &rule22},
2457 {42848, 1, &rule21},
2458 {42849, 1, &rule22},
2459 {42850, 1, &rule21},
2460 {42851, 1, &rule22},
2461 {42852, 1, &rule21},
2462 {42853, 1, &rule22},
2463 {42854, 1, &rule21},
2464 {42855, 1, &rule22},
2465 {42856, 1, &rule21},
2466 {42857, 1, &rule22},
2467 {42858, 1, &rule21},
2468 {42859, 1, &rule22},
2469 {42860, 1, &rule21},
2470 {42861, 1, &rule22},
2471 {42862, 1, &rule21},
2472 {42863, 1, &rule22},
2473 {42864, 1, &rule80},
2474 {42865, 8, &rule14},
2475 {42873, 1, &rule21},
2476 {42874, 1, &rule22},
2477 {42875, 1, &rule21},
2478 {42876, 1, &rule22},
2479 {42877, 1, &rule156},
2480 {42878, 1, &rule21},
2481 {42879, 1, &rule22},
2482 {42880, 1, &rule21},
2483 {42881, 1, &rule22},
2484 {42882, 1, &rule21},
2485 {42883, 1, &rule22},
2486 {42884, 1, &rule21},
2487 {42885, 1, &rule22},
2488 {42886, 1, &rule21},
2489 {42887, 1, &rule22},
2490 {42888, 1, &rule80},
2491 {42889, 2, &rule10},
2492 {42891, 1, &rule21},
2493 {42892, 1, &rule22},
2494 {43003, 7, &rule45},
2495 {43010, 1, &rule81},
2496 {43011, 3, &rule45},
2497 {43014, 1, &rule81},
2498 {43015, 4, &rule45},
2499 {43019, 1, &rule81},
2500 {43020, 23, &rule45},
2501 {43043, 2, &rule111},
2502 {43045, 2, &rule81},
2503 {43047, 1, &rule111},
2504 {43048, 4, &rule13},
2505 {43072, 52, &rule45},
2507 {43136, 2, &rule111},
2508 {43138, 50, &rule45},
2509 {43188, 16, &rule111},
2510 {43204, 1, &rule81},
2512 {43216, 10, &rule8},
2513 {43264, 10, &rule8},
2514 {43274, 28, &rule45},
2515 {43302, 8, &rule81},
2517 {43312, 23, &rule45},
2518 {43335, 11, &rule81},
2519 {43346, 2, &rule111},
2521 {43520, 41, &rule45},
2522 {43561, 6, &rule81},
2523 {43567, 2, &rule111},
2524 {43569, 2, &rule81},
2525 {43571, 2, &rule111},
2526 {43573, 2, &rule81},
2527 {43584, 3, &rule45},
2528 {43587, 1, &rule81},
2529 {43588, 8, &rule45},
2530 {43596, 1, &rule81},
2531 {43597, 1, &rule111},
2532 {43600, 10, &rule8},
2534 {44032, 11172, &rule45},
2535 {55296, 896, &rule157},
2536 {56192, 128, &rule157},
2537 {56320, 1024, &rule157},
2538 {57344, 6400, &rule158},
2539 {63744, 302, &rule45},
2540 {64048, 59, &rule45},
2541 {64112, 106, &rule45},
2542 {64256, 7, &rule14},
2543 {64275, 5, &rule14},
2544 {64285, 1, &rule45},
2545 {64286, 1, &rule81},
2546 {64287, 10, &rule45},
2548 {64298, 13, &rule45},
2549 {64312, 5, &rule45},
2550 {64318, 1, &rule45},
2551 {64320, 2, &rule45},
2552 {64323, 2, &rule45},
2553 {64326, 108, &rule45},
2554 {64467, 363, &rule45},
2557 {64848, 64, &rule45},
2558 {64914, 54, &rule45},
2559 {65008, 12, &rule45},
2561 {65021, 1, &rule13},
2562 {65024, 16, &rule81},
2567 {65056, 7, &rule81},
2570 {65075, 2, &rule11},
2591 {65101, 3, &rule11},
2608 {65136, 5, &rule45},
2609 {65142, 135, &rule45},
2610 {65279, 1, &rule16},
2621 {65296, 10, &rule8},
2625 {65313, 26, &rule9},
2629 {65342, 1, &rule10},
2630 {65343, 1, &rule11},
2631 {65344, 1, &rule10},
2632 {65345, 26, &rule12},
2643 {65382, 10, &rule45},
2644 {65392, 1, &rule80},
2645 {65393, 45, &rule45},
2646 {65438, 2, &rule80},
2647 {65440, 31, &rule45},
2648 {65474, 6, &rule45},
2649 {65482, 6, &rule45},
2650 {65490, 6, &rule45},
2651 {65498, 3, &rule45},
2654 {65507, 1, &rule10},
2655 {65508, 1, &rule13},
2657 {65512, 1, &rule13},
2659 {65517, 2, &rule13},
2660 {65529, 3, &rule16},
2661 {65532, 2, &rule13},
2662 {65536, 12, &rule45},
2663 {65549, 26, &rule45},
2664 {65576, 19, &rule45},
2665 {65596, 2, &rule45},
2666 {65599, 15, &rule45},
2667 {65616, 14, &rule45},
2668 {65664, 123, &rule45},
2670 {65794, 1, &rule13},
2671 {65799, 45, &rule17},
2672 {65847, 9, &rule13},
2673 {65856, 53, &rule113},
2674 {65909, 4, &rule17},
2675 {65913, 17, &rule13},
2676 {65930, 1, &rule17},
2677 {65936, 12, &rule13},
2678 {66000, 45, &rule13},
2679 {66045, 1, &rule81},
2680 {66176, 29, &rule45},
2681 {66208, 49, &rule45},
2682 {66304, 31, &rule45},
2683 {66336, 4, &rule17},
2684 {66352, 17, &rule45},
2685 {66369, 1, &rule113},
2686 {66370, 8, &rule45},
2687 {66378, 1, &rule113},
2688 {66432, 30, &rule45},
2690 {66464, 36, &rule45},
2691 {66504, 8, &rule45},
2693 {66513, 5, &rule113},
2694 {66560, 40, &rule159},
2695 {66600, 40, &rule160},
2696 {66640, 78, &rule45},
2697 {66720, 10, &rule8},
2698 {67584, 6, &rule45},
2699 {67592, 1, &rule45},
2700 {67594, 44, &rule45},
2701 {67639, 2, &rule45},
2702 {67644, 1, &rule45},
2703 {67647, 1, &rule45},
2704 {67840, 22, &rule45},
2705 {67862, 4, &rule17},
2707 {67872, 26, &rule45},
2709 {68096, 1, &rule45},
2710 {68097, 3, &rule81},
2711 {68101, 2, &rule81},
2712 {68108, 4, &rule81},
2713 {68112, 4, &rule45},
2714 {68117, 3, &rule45},
2715 {68121, 27, &rule45},
2716 {68152, 3, &rule81},
2717 {68159, 1, &rule81},
2718 {68160, 8, &rule17},
2720 {73728, 879, &rule45},
2721 {74752, 99, &rule113},
2723 {118784, 246, &rule13},
2724 {119040, 39, &rule13},
2725 {119081, 60, &rule13},
2726 {119141, 2, &rule111},
2727 {119143, 3, &rule81},
2728 {119146, 3, &rule13},
2729 {119149, 6, &rule111},
2730 {119155, 8, &rule16},
2731 {119163, 8, &rule81},
2732 {119171, 2, &rule13},
2733 {119173, 7, &rule81},
2734 {119180, 30, &rule13},
2735 {119210, 4, &rule81},
2736 {119214, 48, &rule13},
2737 {119296, 66, &rule13},
2738 {119362, 3, &rule81},
2739 {119365, 1, &rule13},
2740 {119552, 87, &rule13},
2741 {119648, 18, &rule17},
2742 {119808, 26, &rule95},
2743 {119834, 26, &rule14},
2744 {119860, 26, &rule95},
2745 {119886, 7, &rule14},
2746 {119894, 18, &rule14},
2747 {119912, 26, &rule95},
2748 {119938, 26, &rule14},
2749 {119964, 1, &rule95},
2750 {119966, 2, &rule95},
2751 {119970, 1, &rule95},
2752 {119973, 2, &rule95},
2753 {119977, 4, &rule95},
2754 {119982, 8, &rule95},
2755 {119990, 4, &rule14},
2756 {119995, 1, &rule14},
2757 {119997, 7, &rule14},
2758 {120005, 11, &rule14},
2759 {120016, 26, &rule95},
2760 {120042, 26, &rule14},
2761 {120068, 2, &rule95},
2762 {120071, 4, &rule95},
2763 {120077, 8, &rule95},
2764 {120086, 7, &rule95},
2765 {120094, 26, &rule14},
2766 {120120, 2, &rule95},
2767 {120123, 4, &rule95},
2768 {120128, 5, &rule95},
2769 {120134, 1, &rule95},
2770 {120138, 7, &rule95},
2771 {120146, 26, &rule14},
2772 {120172, 26, &rule95},
2773 {120198, 26, &rule14},
2774 {120224, 26, &rule95},
2775 {120250, 26, &rule14},
2776 {120276, 26, &rule95},
2777 {120302, 26, &rule14},
2778 {120328, 26, &rule95},
2779 {120354, 26, &rule14},
2780 {120380, 26, &rule95},
2781 {120406, 26, &rule14},
2782 {120432, 26, &rule95},
2783 {120458, 28, &rule14},
2784 {120488, 25, &rule95},
2785 {120513, 1, &rule6},
2786 {120514, 25, &rule14},
2787 {120539, 1, &rule6},
2788 {120540, 6, &rule14},
2789 {120546, 25, &rule95},
2790 {120571, 1, &rule6},
2791 {120572, 25, &rule14},
2792 {120597, 1, &rule6},
2793 {120598, 6, &rule14},
2794 {120604, 25, &rule95},
2795 {120629, 1, &rule6},
2796 {120630, 25, &rule14},
2797 {120655, 1, &rule6},
2798 {120656, 6, &rule14},
2799 {120662, 25, &rule95},
2800 {120687, 1, &rule6},
2801 {120688, 25, &rule14},
2802 {120713, 1, &rule6},
2803 {120714, 6, &rule14},
2804 {120720, 25, &rule95},
2805 {120745, 1, &rule6},
2806 {120746, 25, &rule14},
2807 {120771, 1, &rule6},
2808 {120772, 6, &rule14},
2809 {120778, 1, &rule95},
2810 {120779, 1, &rule14},
2811 {120782, 50, &rule8},
2812 {126976, 44, &rule13},
2813 {127024, 100, &rule13},
2814 {131072, 42711, &rule45},
2815 {194560, 542, &rule45},
2816 {917505, 1, &rule16},
2817 {917536, 96, &rule16},
2818 {917760, 240, &rule81},
2819 {983040, 65534, &rule158},
2820 {1048576, 65534, &rule158}
2822 static const struct _charblock_ convchars[]={
3218 {1009, 1, &rule100},
3219 {1010, 1, &rule101},
3220 {1012, 1, &rule102},
3221 {1013, 1, &rule103},
3224 {1017, 1, &rule104},
3228 {1024, 16, &rule105},
3230 {1072, 32, &rule12},
3231 {1104, 16, &rule100},
3320 {1216, 1, &rule107},
3335 {1231, 1, &rule108},
3420 {1329, 38, &rule109},
3421 {1377, 38, &rule110},
3422 {4256, 38, &rule112},
3423 {7545, 1, &rule114},
3424 {7549, 1, &rule115},
3575 {7835, 1, &rule116},
3576 {7838, 1, &rule117},
3673 {7936, 8, &rule118},
3674 {7944, 8, &rule119},
3675 {7952, 6, &rule118},
3676 {7960, 6, &rule119},
3677 {7968, 8, &rule118},
3678 {7976, 8, &rule119},
3679 {7984, 8, &rule118},
3680 {7992, 8, &rule119},
3681 {8000, 6, &rule118},
3682 {8008, 6, &rule119},
3683 {8017, 1, &rule118},
3684 {8019, 1, &rule118},
3685 {8021, 1, &rule118},
3686 {8023, 1, &rule118},
3687 {8025, 1, &rule119},
3688 {8027, 1, &rule119},
3689 {8029, 1, &rule119},
3690 {8031, 1, &rule119},
3691 {8032, 8, &rule118},
3692 {8040, 8, &rule119},
3693 {8048, 2, &rule120},
3694 {8050, 4, &rule121},
3695 {8054, 2, &rule122},
3696 {8056, 2, &rule123},
3697 {8058, 2, &rule124},
3698 {8060, 2, &rule125},
3699 {8064, 8, &rule118},
3700 {8072, 8, &rule126},
3701 {8080, 8, &rule118},
3702 {8088, 8, &rule126},
3703 {8096, 8, &rule118},
3704 {8104, 8, &rule126},
3705 {8112, 2, &rule118},
3706 {8115, 1, &rule127},
3707 {8120, 2, &rule119},
3708 {8122, 2, &rule128},
3709 {8124, 1, &rule129},
3710 {8126, 1, &rule130},
3711 {8131, 1, &rule127},
3712 {8136, 4, &rule131},
3713 {8140, 1, &rule129},
3714 {8144, 2, &rule118},
3715 {8152, 2, &rule119},
3716 {8154, 2, &rule132},
3717 {8160, 2, &rule118},
3718 {8165, 1, &rule101},
3719 {8168, 2, &rule119},
3720 {8170, 2, &rule133},
3721 {8172, 1, &rule104},
3722 {8179, 1, &rule127},
3723 {8184, 2, &rule134},
3724 {8186, 2, &rule135},
3725 {8188, 1, &rule129},
3726 {8486, 1, &rule138},
3727 {8490, 1, &rule139},
3728 {8491, 1, &rule140},
3729 {8498, 1, &rule141},
3730 {8526, 1, &rule142},
3731 {8544, 16, &rule143},
3732 {8560, 16, &rule144},
3735 {9398, 26, &rule145},
3736 {9424, 26, &rule146},
3737 {11264, 47, &rule109},
3738 {11312, 47, &rule110},
3739 {11360, 1, &rule21},
3740 {11361, 1, &rule22},
3741 {11362, 1, &rule147},
3742 {11363, 1, &rule148},
3743 {11364, 1, &rule149},
3744 {11365, 1, &rule150},
3745 {11366, 1, &rule151},
3746 {11367, 1, &rule21},
3747 {11368, 1, &rule22},
3748 {11369, 1, &rule21},
3749 {11370, 1, &rule22},
3750 {11371, 1, &rule21},
3751 {11372, 1, &rule22},
3752 {11373, 1, &rule152},
3753 {11374, 1, &rule153},
3754 {11375, 1, &rule154},
3755 {11378, 1, &rule21},
3756 {11379, 1, &rule22},
3757 {11381, 1, &rule21},
3758 {11382, 1, &rule22},
3759 {11392, 1, &rule21},
3760 {11393, 1, &rule22},
3761 {11394, 1, &rule21},
3762 {11395, 1, &rule22},
3763 {11396, 1, &rule21},
3764 {11397, 1, &rule22},
3765 {11398, 1, &rule21},
3766 {11399, 1, &rule22},
3767 {11400, 1, &rule21},
3768 {11401, 1, &rule22},
3769 {11402, 1, &rule21},
3770 {11403, 1, &rule22},
3771 {11404, 1, &rule21},
3772 {11405, 1, &rule22},
3773 {11406, 1, &rule21},
3774 {11407, 1, &rule22},
3775 {11408, 1, &rule21},
3776 {11409, 1, &rule22},
3777 {11410, 1, &rule21},
3778 {11411, 1, &rule22},
3779 {11412, 1, &rule21},
3780 {11413, 1, &rule22},
3781 {11414, 1, &rule21},
3782 {11415, 1, &rule22},
3783 {11416, 1, &rule21},
3784 {11417, 1, &rule22},
3785 {11418, 1, &rule21},
3786 {11419, 1, &rule22},
3787 {11420, 1, &rule21},
3788 {11421, 1, &rule22},
3789 {11422, 1, &rule21},
3790 {11423, 1, &rule22},
3791 {11424, 1, &rule21},
3792 {11425, 1, &rule22},
3793 {11426, 1, &rule21},
3794 {11427, 1, &rule22},
3795 {11428, 1, &rule21},
3796 {11429, 1, &rule22},
3797 {11430, 1, &rule21},
3798 {11431, 1, &rule22},
3799 {11432, 1, &rule21},
3800 {11433, 1, &rule22},
3801 {11434, 1, &rule21},
3802 {11435, 1, &rule22},
3803 {11436, 1, &rule21},
3804 {11437, 1, &rule22},
3805 {11438, 1, &rule21},
3806 {11439, 1, &rule22},
3807 {11440, 1, &rule21},
3808 {11441, 1, &rule22},
3809 {11442, 1, &rule21},
3810 {11443, 1, &rule22},
3811 {11444, 1, &rule21},
3812 {11445, 1, &rule22},
3813 {11446, 1, &rule21},
3814 {11447, 1, &rule22},
3815 {11448, 1, &rule21},
3816 {11449, 1, &rule22},
3817 {11450, 1, &rule21},
3818 {11451, 1, &rule22},
3819 {11452, 1, &rule21},
3820 {11453, 1, &rule22},
3821 {11454, 1, &rule21},
3822 {11455, 1, &rule22},
3823 {11456, 1, &rule21},
3824 {11457, 1, &rule22},
3825 {11458, 1, &rule21},
3826 {11459, 1, &rule22},
3827 {11460, 1, &rule21},
3828 {11461, 1, &rule22},
3829 {11462, 1, &rule21},
3830 {11463, 1, &rule22},
3831 {11464, 1, &rule21},
3832 {11465, 1, &rule22},
3833 {11466, 1, &rule21},
3834 {11467, 1, &rule22},
3835 {11468, 1, &rule21},
3836 {11469, 1, &rule22},
3837 {11470, 1, &rule21},
3838 {11471, 1, &rule22},
3839 {11472, 1, &rule21},
3840 {11473, 1, &rule22},
3841 {11474, 1, &rule21},
3842 {11475, 1, &rule22},
3843 {11476, 1, &rule21},
3844 {11477, 1, &rule22},
3845 {11478, 1, &rule21},
3846 {11479, 1, &rule22},
3847 {11480, 1, &rule21},
3848 {11481, 1, &rule22},
3849 {11482, 1, &rule21},
3850 {11483, 1, &rule22},
3851 {11484, 1, &rule21},
3852 {11485, 1, &rule22},
3853 {11486, 1, &rule21},
3854 {11487, 1, &rule22},
3855 {11488, 1, &rule21},
3856 {11489, 1, &rule22},
3857 {11490, 1, &rule21},
3858 {11491, 1, &rule22},
3859 {11520, 38, &rule155},
3860 {42560, 1, &rule21},
3861 {42561, 1, &rule22},
3862 {42562, 1, &rule21},
3863 {42563, 1, &rule22},
3864 {42564, 1, &rule21},
3865 {42565, 1, &rule22},
3866 {42566, 1, &rule21},
3867 {42567, 1, &rule22},
3868 {42568, 1, &rule21},
3869 {42569, 1, &rule22},
3870 {42570, 1, &rule21},
3871 {42571, 1, &rule22},
3872 {42572, 1, &rule21},
3873 {42573, 1, &rule22},
3874 {42574, 1, &rule21},
3875 {42575, 1, &rule22},
3876 {42576, 1, &rule21},
3877 {42577, 1, &rule22},
3878 {42578, 1, &rule21},
3879 {42579, 1, &rule22},
3880 {42580, 1, &rule21},
3881 {42581, 1, &rule22},
3882 {42582, 1, &rule21},
3883 {42583, 1, &rule22},
3884 {42584, 1, &rule21},
3885 {42585, 1, &rule22},
3886 {42586, 1, &rule21},
3887 {42587, 1, &rule22},
3888 {42588, 1, &rule21},
3889 {42589, 1, &rule22},
3890 {42590, 1, &rule21},
3891 {42591, 1, &rule22},
3892 {42594, 1, &rule21},
3893 {42595, 1, &rule22},
3894 {42596, 1, &rule21},
3895 {42597, 1, &rule22},
3896 {42598, 1, &rule21},
3897 {42599, 1, &rule22},
3898 {42600, 1, &rule21},
3899 {42601, 1, &rule22},
3900 {42602, 1, &rule21},
3901 {42603, 1, &rule22},
3902 {42604, 1, &rule21},
3903 {42605, 1, &rule22},
3904 {42624, 1, &rule21},
3905 {42625, 1, &rule22},
3906 {42626, 1, &rule21},
3907 {42627, 1, &rule22},
3908 {42628, 1, &rule21},
3909 {42629, 1, &rule22},
3910 {42630, 1, &rule21},
3911 {42631, 1, &rule22},
3912 {42632, 1, &rule21},
3913 {42633, 1, &rule22},
3914 {42634, 1, &rule21},
3915 {42635, 1, &rule22},
3916 {42636, 1, &rule21},
3917 {42637, 1, &rule22},
3918 {42638, 1, &rule21},
3919 {42639, 1, &rule22},
3920 {42640, 1, &rule21},
3921 {42641, 1, &rule22},
3922 {42642, 1, &rule21},
3923 {42643, 1, &rule22},
3924 {42644, 1, &rule21},
3925 {42645, 1, &rule22},
3926 {42646, 1, &rule21},
3927 {42647, 1, &rule22},
3928 {42786, 1, &rule21},
3929 {42787, 1, &rule22},
3930 {42788, 1, &rule21},
3931 {42789, 1, &rule22},
3932 {42790, 1, &rule21},
3933 {42791, 1, &rule22},
3934 {42792, 1, &rule21},
3935 {42793, 1, &rule22},
3936 {42794, 1, &rule21},
3937 {42795, 1, &rule22},
3938 {42796, 1, &rule21},
3939 {42797, 1, &rule22},
3940 {42798, 1, &rule21},
3941 {42799, 1, &rule22},
3942 {42802, 1, &rule21},
3943 {42803, 1, &rule22},
3944 {42804, 1, &rule21},
3945 {42805, 1, &rule22},
3946 {42806, 1, &rule21},
3947 {42807, 1, &rule22},
3948 {42808, 1, &rule21},
3949 {42809, 1, &rule22},
3950 {42810, 1, &rule21},
3951 {42811, 1, &rule22},
3952 {42812, 1, &rule21},
3953 {42813, 1, &rule22},
3954 {42814, 1, &rule21},
3955 {42815, 1, &rule22},
3956 {42816, 1, &rule21},
3957 {42817, 1, &rule22},
3958 {42818, 1, &rule21},
3959 {42819, 1, &rule22},
3960 {42820, 1, &rule21},
3961 {42821, 1, &rule22},
3962 {42822, 1, &rule21},
3963 {42823, 1, &rule22},
3964 {42824, 1, &rule21},
3965 {42825, 1, &rule22},
3966 {42826, 1, &rule21},
3967 {42827, 1, &rule22},
3968 {42828, 1, &rule21},
3969 {42829, 1, &rule22},
3970 {42830, 1, &rule21},
3971 {42831, 1, &rule22},
3972 {42832, 1, &rule21},
3973 {42833, 1, &rule22},
3974 {42834, 1, &rule21},
3975 {42835, 1, &rule22},
3976 {42836, 1, &rule21},
3977 {42837, 1, &rule22},
3978 {42838, 1, &rule21},
3979 {42839, 1, &rule22},
3980 {42840, 1, &rule21},
3981 {42841, 1, &rule22},
3982 {42842, 1, &rule21},
3983 {42843, 1, &rule22},
3984 {42844, 1, &rule21},
3985 {42845, 1, &rule22},
3986 {42846, 1, &rule21},
3987 {42847, 1, &rule22},
3988 {42848, 1, &rule21},
3989 {42849, 1, &rule22},
3990 {42850, 1, &rule21},
3991 {42851, 1, &rule22},
3992 {42852, 1, &rule21},
3993 {42853, 1, &rule22},
3994 {42854, 1, &rule21},
3995 {42855, 1, &rule22},
3996 {42856, 1, &rule21},
3997 {42857, 1, &rule22},
3998 {42858, 1, &rule21},
3999 {42859, 1, &rule22},
4000 {42860, 1, &rule21},
4001 {42861, 1, &rule22},
4002 {42862, 1, &rule21},
4003 {42863, 1, &rule22},
4004 {42873, 1, &rule21},
4005 {42874, 1, &rule22},
4006 {42875, 1, &rule21},
4007 {42876, 1, &rule22},
4008 {42877, 1, &rule156},
4009 {42878, 1, &rule21},
4010 {42879, 1, &rule22},
4011 {42880, 1, &rule21},
4012 {42881, 1, &rule22},
4013 {42882, 1, &rule21},
4014 {42883, 1, &rule22},
4015 {42884, 1, &rule21},
4016 {42885, 1, &rule22},
4017 {42886, 1, &rule21},
4018 {42887, 1, &rule22},
4019 {42891, 1, &rule21},
4020 {42892, 1, &rule22},
4021 {65313, 26, &rule9},
4022 {65345, 26, &rule12},
4023 {66560, 40, &rule159},
4024 {66600, 40, &rule160}
4026 static const struct _charblock_ spacechars[]={
4038 Obtain the reference to character rule by doing
4039 binary search over the specified array of blocks.
4040 To make checkattr shorter, the address of
4041 nullrule is returned if the search fails:
4042 this rule defines no category and no conversion
4043 distances. The compare function returns 0 when
4044 key->start is within the block. Otherwise
4045 result of comparison of key->start and start of the
4046 current block is returned as usual.
4049 static const struct _convrule_ nullrule={0,NUMCAT_CN,0,0,0,0};
4051 int blkcmp(const void *vk,const void *vb)
4053 const struct _charblock_ *key,*cur;
4056 if((key->start>=cur->start)&&(key->start<(cur->start+cur->length)))
4060 if(key->start>cur->start) return 1;
4064 static const struct _convrule_ *getrule(
4065 const struct _charblock_ *blocks,
4069 struct _charblock_ key={unichar,1,(void *)0};
4070 struct _charblock_ *cb=bsearch(&key,blocks,numblocks,sizeof(key),blkcmp);
4071 if(cb==(void *)0) return &nullrule;
4078 Check whether a character (internal code) has certain attributes.
4079 Attributes (category flags) may be ORed. The function ANDs
4080 character category flags and the mask and returns the result.
4081 If the character belongs to one of the categories requested,
4082 the result will be nonzero.
4085 inline static int checkattr(int c,unsigned int catmask)
4087 return (catmask & (getrule(allchars,(c<256)?NUM_LAT1BLOCKS:NUM_BLOCKS,c)->category));
4090 inline static int checkattr_s(int c,unsigned int catmask)
4092 return (catmask & (getrule(spacechars,NUM_SPACEBLOCKS,c)->category));
4096 Define predicate functions for some combinations of categories.
4099 #define unipred(p,m) \
4102 return checkattr(c,m); \
4105 #define unipred_s(p,m) \
4108 return checkattr_s(c,m); \
4112 Make these rules as close to Hugs as possible.
4115 unipred(u_iswcntrl,GENCAT_CC)
4116 unipred(u_iswprint, (GENCAT_MC | GENCAT_NO | GENCAT_SK | GENCAT_ME | GENCAT_ND | GENCAT_PO | GENCAT_LT | GENCAT_PC | GENCAT_SM | GENCAT_ZS | GENCAT_LU | GENCAT_PD | GENCAT_SO | GENCAT_PE | GENCAT_PF | GENCAT_PS | GENCAT_SC | GENCAT_LL | GENCAT_LM | GENCAT_PI | GENCAT_NL | GENCAT_MN | GENCAT_LO))
4117 unipred_s(u_iswspace,GENCAT_ZS)
4118 unipred(u_iswupper,(GENCAT_LU|GENCAT_LT))
4119 unipred(u_iswlower,GENCAT_LL)
4120 unipred(u_iswalpha,(GENCAT_LL|GENCAT_LU|GENCAT_LT|GENCAT_LM|GENCAT_LO))
4121 unipred(u_iswdigit,GENCAT_ND)
4123 unipred(u_iswalnum,(GENCAT_LT|GENCAT_LU|GENCAT_LL|GENCAT_LM|GENCAT_LO|
4124 GENCAT_MC|GENCAT_ME|GENCAT_MN|
4125 GENCAT_NO|GENCAT_ND|GENCAT_NL))
4127 #define caseconv(p,to) \
4130 const struct _convrule_ *rule=getrule(convchars,NUM_CONVBLOCKS,c);\
4131 if(rule==&nullrule) return c;\
4135 caseconv(u_towupper,updist)
4136 caseconv(u_towlower,lowdist)
4137 caseconv(u_towtitle,titledist)
4141 return getrule(allchars,NUM_BLOCKS,c)->catnumber;