1 /*
2  * Do not edit this file!
3  * This file is generated from:
4  *    UnicodeData.txt (version 6.3.0)
5  *    SpecialCasing.txt (version 6.3.0)
6  */
7 
8 #include <stddef.h>
9 #include <idn/utf32.h>
10 #include <idn/auto/lowercase.h>
11 
12 /*
13  * Lowercase tables.
14  */
15 #define LOWERCASE_BITS_0	9
16 #define LOWERCASE_BITS_1	7
17 #define LOWERCASE_BITS_2	5
18 
19 static const unsigned short lowercase_imap[] = {
20 	  272,   400,   528,   656,   656,   656,   656,   656,
21 	  656,   656,   784,   656,   656,   656,   656,   912,
22 	 1040,   656,   656,   656,   656,   656,   656,   656,
23 	  656,   656,   656,   656,   656,   656,   656,   656,
24 	  656,   656,   656,   656,   656,   656,   656,   656,
25 	  656,   656,   656,   656,   656,   656,   656,   656,
26 	  656,   656,   656,   656,   656,   656,   656,   656,
27 	  656,   656,   656,   656,   656,   656,   656,   656,
28 	  656,   656,   656,   656,   656,   656,   656,   656,
29 	  656,   656,   656,   656,   656,   656,   656,   656,
30 	  656,   656,   656,   656,   656,   656,   656,   656,
31 	  656,   656,   656,   656,   656,   656,   656,   656,
32 	  656,   656,   656,   656,   656,   656,   656,   656,
33 	  656,   656,   656,   656,   656,   656,   656,   656,
34 	  656,   656,   656,   656,   656,   656,   656,   656,
35 	  656,   656,   656,   656,   656,   656,   656,   656,
36 	  656,   656,   656,   656,   656,   656,   656,   656,
37 	  656,   656,   656,   656,   656,   656,   656,   656,
38 	  656,   656,   656,   656,   656,   656,   656,   656,
39 	  656,   656,   656,   656,   656,   656,   656,   656,
40 	  656,   656,   656,   656,   656,   656,   656,   656,
41 	  656,   656,   656,   656,   656,   656,   656,   656,
42 	  656,   656,   656,   656,   656,   656,   656,   656,
43 	  656,   656,   656,   656,   656,   656,   656,   656,
44 	  656,   656,   656,   656,   656,   656,   656,   656,
45 	  656,   656,   656,   656,   656,   656,   656,   656,
46 	  656,   656,   656,   656,   656,   656,   656,   656,
47 	  656,   656,   656,   656,   656,   656,   656,   656,
48 	  656,   656,   656,   656,   656,   656,   656,   656,
49 	  656,   656,   656,   656,   656,   656,   656,   656,
50 	  656,   656,   656,   656,   656,   656,   656,   656,
51 	  656,   656,   656,   656,   656,   656,   656,   656,
52 	  656,   656,   656,   656,   656,   656,   656,   656,
53 	  656,   656,   656,   656,   656,   656,   656,   656,
54 	    0,     0,     1,     0,     0,     0,     2,     0,
55 	    3,     4,     5,     6,     7,     8,     9,    10,
56 	   11,    12,    13,     0,     0,     0,     0,     0,
57 	   14,     0,     0,    15,    16,    17,    18,    19,
58 	   20,    21,     0,    22,    23,    24,    25,    26,
59 	   27,    28,    29,     0,     0,     0,     0,     0,
60 	    0,     0,     0,     0,     0,     0,     0,     0,
61 	    0,     0,     0,     0,     0,     0,     0,     0,
62 	    0,     0,     0,     0,     0,     0,     0,     0,
63 	    0,     0,     0,     0,     0,     0,     0,     0,
64 	    0,     0,     0,     0,     0,     0,     0,     0,
65 	    0,     0,     0,     0,     0,     0,     0,     0,
66 	    0,     0,     0,     0,     0,     0,     0,     0,
67 	    0,     0,     0,     0,     0,     0,     0,     0,
68 	    0,     0,     0,     0,     0,     0,     0,     0,
69 	    0,     0,     0,     0,     0,     0,     0,     0,
70 	    0,     0,     0,     0,     0,    30,    31,     0,
71 	    0,     0,     0,     0,     0,     0,     0,     0,
72 	    0,     0,     0,     0,     0,     0,     0,     0,
73 	    0,     0,     0,     0,     0,     0,     0,     0,
74 	    0,     0,     0,     0,     0,     0,     0,     0,
75 	    0,     0,     0,     0,     0,     0,     0,     0,
76 	    0,     0,     0,     0,     0,     0,     0,     0,
77 	    0,     0,     0,     0,     0,     0,     0,     0,
78 	    0,     0,     0,     0,     0,     0,     0,     0,
79 	    0,     0,     0,     0,     0,     0,     0,     0,
80 	    0,     0,     0,     0,     0,     0,     0,     0,
81 	    0,     0,     0,     0,     0,     0,     0,     0,
82 	    0,     0,     0,     0,     0,     0,     0,     0,
83 	    0,     0,     0,     0,     0,     0,     0,     0,
84 	   32,    33,    34,    35,    36,    37,    38,    39,
85 	   40,    41,    42,    43,    44,    45,    46,    47,
86 	    0,     0,     0,     0,     0,     0,     0,     0,
87 	    0,    48,     0,    49,    50,     0,     0,     0,
88 	    0,     0,     0,     0,     0,     0,     0,     0,
89 	    0,     0,     0,     0,     0,     0,     0,     0,
90 	    0,     0,     0,     0,     0,    51,    52,     0,
91 	    0,     0,     0,     0,     0,     0,     0,     0,
92 	    0,     0,     0,     0,     0,     0,     0,     0,
93 	    0,     0,     0,     0,     0,     0,     0,     0,
94 	    0,     0,     0,     0,     0,     0,     0,     0,
95 	    0,     0,     0,     0,     0,     0,     0,     0,
96 	    0,     0,     0,     0,     0,     0,     0,     0,
97 	    0,     0,     0,     0,     0,     0,     0,     0,
98 	   53,    54,     0,    55,    56,    57,    58,    59,
99 	    0,     0,     0,     0,     0,     0,     0,     0,
100 	    0,     0,     0,     0,     0,     0,     0,     0,
101 	    0,     0,     0,     0,     0,     0,     0,     0,
102 	    0,     0,     0,     0,     0,     0,     0,     0,
103 	    0,     0,     0,     0,     0,     0,     0,     0,
104 	    0,     0,     0,     0,     0,     0,     0,     0,
105 	    0,     0,     0,     0,     0,     0,     0,     0,
106 	    0,     0,     0,     0,     0,     0,     0,     0,
107 	    0,     0,     0,     0,     0,     0,     0,     0,
108 	    0,     0,     0,     0,     0,     0,     0,     0,
109 	    0,     0,     0,     0,     0,     0,     0,     0,
110 	    0,     0,     0,     0,     0,     0,     0,     0,
111 	    0,     0,     0,     0,     0,     0,     0,     0,
112 	    0,     0,     0,     0,     0,     0,     0,     0,
113 	    0,     0,     0,     0,     0,     0,     0,     0,
114 	    0,     0,     0,     0,     0,     0,     0,     0,
115 	    0,     0,     0,     0,     0,     0,     0,     0,
116 	    0,     0,     0,     0,     0,     0,     0,     0,
117 	    0,     0,     0,     0,     0,     0,     0,     0,
118 	    0,     0,     0,     0,     0,     0,     0,     0,
119 	    0,     0,     0,     0,     0,     0,     0,     0,
120 	    0,     0,     0,     0,     0,     0,     0,     0,
121 	    0,     0,     0,     0,     0,     0,     0,     0,
122 	    0,     0,     0,     0,     0,     0,     0,     0,
123 	    0,     0,     0,     0,     0,     0,     0,     0,
124 	    0,     0,    60,    61,    62,     0,     0,     0,
125 	    0,    63,    64,    65,    66,    67,     0,     0,
126 	    0,     0,     0,     0,     0,     0,     0,     0,
127 	    0,     0,     0,     0,     0,     0,     0,     0,
128 	    0,     0,     0,     0,     0,     0,     0,     0,
129 	    0,     0,     0,     0,     0,     0,     0,     0,
130 	    0,     0,     0,     0,     0,     0,     0,     0,
131 	    0,     0,     0,     0,     0,     0,     0,     0,
132 	    0,     0,     0,     0,     0,     0,     0,     0,
133 	    0,     0,     0,     0,     0,     0,     0,     0,
134 	    0,     0,     0,     0,     0,     0,     0,     0,
135 	    0,     0,     0,     0,     0,     0,     0,     0,
136 	    0,     0,     0,     0,     0,     0,     0,     0,
137 	    0,     0,     0,     0,     0,     0,     0,     0,
138 	    0,     0,     0,     0,     0,     0,     0,     0,
139 	    0,     0,     0,     0,     0,     0,     0,     0,
140 	    0,     0,     0,     0,     0,     0,     0,     0,
141 	    0,     0,     0,     0,     0,     0,     0,     0,
142 	    0,     0,     0,     0,     0,     0,     0,     0,
143 	    0,     0,     0,     0,     0,     0,     0,     0,
144 	    0,     0,     0,     0,     0,     0,     0,     0,
145 	    0,     0,     0,     0,     0,     0,     0,     0,
146 	    0,     0,     0,     0,     0,     0,     0,     0,
147 	    0,     0,     0,     0,     0,     0,     0,     0,
148 	    0,     0,     0,     0,     0,     0,     0,     0,
149 	    0,    68,     0,     0,     0,     0,     0,     0,
150 	    0,     0,     0,     0,     0,     0,     0,     0,
151 	    0,     0,     0,     0,     0,     0,     0,     0,
152 	    0,     0,     0,     0,     0,     0,     0,     0,
153 	    0,     0,     0,     0,     0,     0,     0,     0,
154 	   69,    70,     0,     0,     0,     0,     0,     0,
155 	    0,     0,     0,     0,     0,     0,     0,     0,
156 	    0,     0,     0,     0,     0,     0,     0,     0,
157 	    0,     0,     0,     0,     0,     0,     0,     0,
158 	    0,     0,     0,     0,     0,     0,     0,     0,
159 	    0,     0,     0,     0,     0,     0,     0,     0,
160 	    0,     0,     0,     0,     0,     0,     0,     0,
161 	    0,     0,     0,     0,     0,     0,     0,     0,
162 	    0,     0,     0,     0,     0,     0,     0,     0,
163 	    0,     0,     0,     0,     0,     0,     0,     0,
164 	    0,     0,     0,     0,     0,     0,     0,     0,
165 	    0,     0,     0,     0,     0,     0,     0,     0,
166 };
167 
168 static const struct {
169 	unsigned long tbl[32];
170 } lowercase_table[] = {
171 	{{
172 	         0UL,          0UL,          0UL,          0UL,          0UL,
173 	         0UL,          0UL,          0UL,          0UL,          0UL,
174 	         0UL,          0UL,          0UL,          0UL,          0UL,
175 	         0UL,          0UL,          0UL,          0UL,          0UL,
176 	         0UL,          0UL,          0UL,          0UL,          0UL,
177 	         0UL,          0UL,          0UL,          0UL,          0UL,
178 	         0UL,          0UL,
179 	}},
180 	{{
181 	         0UL,         97UL,         98UL,         99UL,        100UL,
182 	       101UL,        102UL,        103UL,        104UL, 2147483753UL,
183 	2147483754UL,        107UL,        108UL,        109UL,        110UL,
184 	       111UL,        112UL,        113UL,        114UL,        115UL,
185 	       116UL,        117UL,        118UL,        119UL,        120UL,
186 	       121UL,        122UL,          0UL,          0UL,          0UL,
187 	         0UL,          0UL,
188 	}},
189 	{{
190 	       224UL,        225UL,        226UL,        227UL,        228UL,
191 	       229UL,        230UL,        231UL,        232UL,        233UL,
192 	       234UL,        235UL, 2147483884UL, 2147483885UL,        238UL,
193 	       239UL,        240UL,        241UL,        242UL,        243UL,
194 	       244UL,        245UL,        246UL,          0UL,        248UL,
195 	       249UL,        250UL,        251UL,        252UL,        253UL,
196 	       254UL,          0UL,
197 	}},
198 	{{
199 	       257UL,          0UL,        259UL,          0UL,        261UL,
200 	         0UL,        263UL,          0UL,        265UL,          0UL,
201 	       267UL,          0UL,        269UL,          0UL,        271UL,
202 	         0UL,        273UL,          0UL,        275UL,          0UL,
203 	       277UL,          0UL,        279UL,          0UL,        281UL,
204 	         0UL,        283UL,          0UL,        285UL,          0UL,
205 	       287UL,          0UL,
206 	}},
207 	{{
208 	       289UL,          0UL,        291UL,          0UL,        293UL,
209 	         0UL,        295UL,          0UL, 2147483945UL,          0UL,
210 	       299UL,          0UL,        301UL,          0UL, 2147483951UL,
211 	         0UL, 2147483753UL,          0UL,        307UL,          0UL,
212 	       309UL,          0UL,        311UL,          0UL,          0UL,
213 	       314UL,          0UL,        316UL,          0UL,        318UL,
214 	         0UL,        320UL,
215 	}},
216 	{{
217 	         0UL,        322UL,          0UL,        324UL,          0UL,
218 	       326UL,          0UL,        328UL,          0UL,          0UL,
219 	       331UL,          0UL,        333UL,          0UL,        335UL,
220 	         0UL,        337UL,          0UL,        339UL,          0UL,
221 	       341UL,          0UL,        343UL,          0UL,        345UL,
222 	         0UL,        347UL,          0UL,        349UL,          0UL,
223 	       351UL,          0UL,
224 	}},
225 	{{
226 	       353UL,          0UL,        355UL,          0UL,        357UL,
227 	         0UL,        359UL,          0UL,        361UL,          0UL,
228 	       363UL,          0UL,        365UL,          0UL,        367UL,
229 	         0UL,        369UL,          0UL,        371UL,          0UL,
230 	       373UL,          0UL,        375UL,          0UL,        255UL,
231 	       378UL,          0UL,        380UL,          0UL,        382UL,
232 	         0UL,          0UL,
233 	}},
234 	{{
235 	         0UL,        595UL,        387UL,          0UL,        389UL,
236 	         0UL,        596UL,        392UL,          0UL,        598UL,
237 	       599UL,        396UL,          0UL,          0UL,        477UL,
238 	       601UL,        603UL,        402UL,          0UL,        608UL,
239 	       611UL,          0UL,        617UL,        616UL,        409UL,
240 	         0UL,          0UL,          0UL,        623UL,        626UL,
241 	         0UL,        629UL,
242 	}},
243 	{{
244 	       417UL,          0UL,        419UL,          0UL,        421UL,
245 	         0UL,        640UL,        424UL,          0UL,        643UL,
246 	         0UL,          0UL,        429UL,          0UL,        648UL,
247 	       432UL,          0UL,        650UL,        651UL,        436UL,
248 	         0UL,        438UL,          0UL,        658UL,        441UL,
249 	         0UL,          0UL,          0UL,        445UL,          0UL,
250 	         0UL,          0UL,
251 	}},
252 	{{
253 	         0UL,          0UL,          0UL,          0UL,        454UL,
254 	       454UL,          0UL,        457UL,        457UL,          0UL,
255 	       460UL,        460UL,          0UL,        462UL,          0UL,
256 	       464UL,          0UL,        466UL,          0UL,        468UL,
257 	         0UL,        470UL,          0UL,        472UL,          0UL,
258 	       474UL,          0UL,        476UL,          0UL,          0UL,
259 	       479UL,          0UL,
260 	}},
261 	{{
262 	       481UL,          0UL,        483UL,          0UL,        485UL,
263 	         0UL,        487UL,          0UL,        489UL,          0UL,
264 	       491UL,          0UL,        493UL,          0UL,        495UL,
265 	         0UL,          0UL,        499UL,        499UL,          0UL,
266 	       501UL,          0UL,        405UL,        447UL,        505UL,
267 	         0UL,        507UL,          0UL,        509UL,          0UL,
268 	       511UL,          0UL,
269 	}},
270 	{{
271 	       513UL,          0UL,        515UL,          0UL,        517UL,
272 	         0UL,        519UL,          0UL,        521UL,          0UL,
273 	       523UL,          0UL,        525UL,          0UL,        527UL,
274 	         0UL,        529UL,          0UL,        531UL,          0UL,
275 	       533UL,          0UL,        535UL,          0UL,        537UL,
276 	         0UL,        539UL,          0UL,        541UL,          0UL,
277 	       543UL,          0UL,
278 	}},
279 	{{
280 	       414UL,          0UL,        547UL,          0UL,        549UL,
281 	         0UL,        551UL,          0UL,        553UL,          0UL,
282 	       555UL,          0UL,        557UL,          0UL,        559UL,
283 	         0UL,        561UL,          0UL,        563UL,          0UL,
284 	         0UL,          0UL,          0UL,          0UL,          0UL,
285 	         0UL,      11365UL,        572UL,          0UL,        410UL,
286 	     11366UL,          0UL,
287 	}},
288 	{{
289 	         0UL,        578UL,          0UL,        384UL,        649UL,
290 	       652UL,        583UL,          0UL,        585UL,          0UL,
291 	       587UL,          0UL,        589UL,          0UL,        591UL,
292 	         0UL,          0UL,          0UL,          0UL,          0UL,
293 	         0UL,          0UL,          0UL,          0UL,          0UL,
294 	         0UL,          0UL,          0UL,          0UL,          0UL,
295 	         0UL,          0UL,
296 	}},
297 	{{
298 	         0UL,          0UL,          0UL,          0UL,          0UL,
299 	         0UL,          0UL, 2147484423UL,          0UL,          0UL,
300 	         0UL,          0UL,          0UL,          0UL,          0UL,
301 	         0UL,          0UL,          0UL,          0UL,          0UL,
302 	         0UL,          0UL,          0UL,          0UL,          0UL,
303 	         0UL,          0UL,          0UL,          0UL,          0UL,
304 	         0UL,          0UL,
305 	}},
306 	{{
307 	         0UL,          0UL,          0UL,          0UL,          0UL,
308 	         0UL,          0UL,          0UL,          0UL,          0UL,
309 	         0UL,          0UL,          0UL,          0UL,          0UL,
310 	         0UL,        881UL,          0UL,        883UL,          0UL,
311 	         0UL,          0UL,        887UL,          0UL,          0UL,
312 	         0UL,          0UL,          0UL,          0UL,          0UL,
313 	         0UL,          0UL,
314 	}},
315 	{{
316 	         0UL,          0UL,          0UL,          0UL,          0UL,
317 	         0UL,        940UL,          0UL,        941UL,        942UL,
318 	       943UL,          0UL,        972UL,          0UL,        973UL,
319 	       974UL,          0UL,        945UL,        946UL,        947UL,
320 	       948UL,        949UL,        950UL,        951UL,        952UL,
321 	       953UL,        954UL,        955UL,        956UL,        957UL,
322 	       958UL,        959UL,
323 	}},
324 	{{
325 	       960UL,        961UL,          0UL, 2147484611UL,        964UL,
326 	       965UL,        966UL,        967UL,        968UL,        969UL,
327 	       970UL,        971UL,          0UL,          0UL,          0UL,
328 	         0UL,          0UL,          0UL,          0UL,          0UL,
329 	         0UL,          0UL,          0UL,          0UL,          0UL,
330 	         0UL,          0UL,          0UL,          0UL,          0UL,
331 	         0UL,          0UL,
332 	}},
333 	{{
334 	         0UL,          0UL,          0UL,          0UL,          0UL,
335 	         0UL,          0UL,          0UL,          0UL,          0UL,
336 	         0UL,          0UL,          0UL,          0UL,          0UL,
337 	       983UL,          0UL,          0UL,          0UL,          0UL,
338 	         0UL,          0UL,          0UL,          0UL,        985UL,
339 	         0UL,        987UL,          0UL,        989UL,          0UL,
340 	       991UL,          0UL,
341 	}},
342 	{{
343 	       993UL,          0UL,        995UL,          0UL,        997UL,
344 	         0UL,        999UL,          0UL,       1001UL,          0UL,
345 	      1003UL,          0UL,       1005UL,          0UL,       1007UL,
346 	         0UL,          0UL,          0UL,          0UL,          0UL,
347 	       952UL,          0UL,          0UL,       1016UL,          0UL,
348 	      1010UL,       1019UL,          0UL,          0UL,        891UL,
349 	       892UL,        893UL,
350 	}},
351 	{{
352 	      1104UL,       1105UL,       1106UL,       1107UL,       1108UL,
353 	      1109UL,       1110UL,       1111UL,       1112UL,       1113UL,
354 	      1114UL,       1115UL,       1116UL,       1117UL,       1118UL,
355 	      1119UL,       1072UL,       1073UL,       1074UL,       1075UL,
356 	      1076UL,       1077UL,       1078UL,       1079UL,       1080UL,
357 	      1081UL,       1082UL,       1083UL,       1084UL,       1085UL,
358 	      1086UL,       1087UL,
359 	}},
360 	{{
361 	      1088UL,       1089UL,       1090UL,       1091UL,       1092UL,
362 	      1093UL,       1094UL,       1095UL,       1096UL,       1097UL,
363 	      1098UL,       1099UL,       1100UL,       1101UL,       1102UL,
364 	      1103UL,          0UL,          0UL,          0UL,          0UL,
365 	         0UL,          0UL,          0UL,          0UL,          0UL,
366 	         0UL,          0UL,          0UL,          0UL,          0UL,
367 	         0UL,          0UL,
368 	}},
369 	{{
370 	      1121UL,          0UL,       1123UL,          0UL,       1125UL,
371 	         0UL,       1127UL,          0UL,       1129UL,          0UL,
372 	      1131UL,          0UL,       1133UL,          0UL,       1135UL,
373 	         0UL,       1137UL,          0UL,       1139UL,          0UL,
374 	      1141UL,          0UL,       1143UL,          0UL,       1145UL,
375 	         0UL,       1147UL,          0UL,       1149UL,          0UL,
376 	      1151UL,          0UL,
377 	}},
378 	{{
379 	      1153UL,          0UL,          0UL,          0UL,          0UL,
380 	         0UL,          0UL,          0UL,          0UL,          0UL,
381 	      1163UL,          0UL,       1165UL,          0UL,       1167UL,
382 	         0UL,       1169UL,          0UL,       1171UL,          0UL,
383 	      1173UL,          0UL,       1175UL,          0UL,       1177UL,
384 	         0UL,       1179UL,          0UL,       1181UL,          0UL,
385 	      1183UL,          0UL,
386 	}},
387 	{{
388 	      1185UL,          0UL,       1187UL,          0UL,       1189UL,
389 	         0UL,       1191UL,          0UL,       1193UL,          0UL,
390 	      1195UL,          0UL,       1197UL,          0UL,       1199UL,
391 	         0UL,       1201UL,          0UL,       1203UL,          0UL,
392 	      1205UL,          0UL,       1207UL,          0UL,       1209UL,
393 	         0UL,       1211UL,          0UL,       1213UL,          0UL,
394 	      1215UL,          0UL,
395 	}},
396 	{{
397 	      1231UL,       1218UL,          0UL,       1220UL,          0UL,
398 	      1222UL,          0UL,       1224UL,          0UL,       1226UL,
399 	         0UL,       1228UL,          0UL,       1230UL,          0UL,
400 	         0UL,       1233UL,          0UL,       1235UL,          0UL,
401 	      1237UL,          0UL,       1239UL,          0UL,       1241UL,
402 	         0UL,       1243UL,          0UL,       1245UL,          0UL,
403 	      1247UL,          0UL,
404 	}},
405 	{{
406 	      1249UL,          0UL,       1251UL,          0UL,       1253UL,
407 	         0UL,       1255UL,          0UL,       1257UL,          0UL,
408 	      1259UL,          0UL,       1261UL,          0UL,       1263UL,
409 	         0UL,       1265UL,          0UL,       1267UL,          0UL,
410 	      1269UL,          0UL,       1271UL,          0UL,       1273UL,
411 	         0UL,       1275UL,          0UL,       1277UL,          0UL,
412 	      1279UL,          0UL,
413 	}},
414 	{{
415 	      1281UL,          0UL,       1283UL,          0UL,       1285UL,
416 	         0UL,       1287UL,          0UL,       1289UL,          0UL,
417 	      1291UL,          0UL,       1293UL,          0UL,       1295UL,
418 	         0UL,       1297UL,          0UL,       1299UL,          0UL,
419 	      1301UL,          0UL,       1303UL,          0UL,       1305UL,
420 	         0UL,       1307UL,          0UL,       1309UL,          0UL,
421 	      1311UL,          0UL,
422 	}},
423 	{{
424 	      1313UL,          0UL,       1315UL,          0UL,       1317UL,
425 	         0UL,       1319UL,          0UL,          0UL,          0UL,
426 	         0UL,          0UL,          0UL,          0UL,          0UL,
427 	         0UL,          0UL,       1377UL,       1378UL,       1379UL,
428 	      1380UL,       1381UL,       1382UL,       1383UL,       1384UL,
429 	      1385UL,       1386UL,       1387UL,       1388UL,       1389UL,
430 	      1390UL,       1391UL,
431 	}},
432 	{{
433 	      1392UL,       1393UL,       1394UL,       1395UL,       1396UL,
434 	      1397UL,       1398UL,       1399UL,       1400UL,       1401UL,
435 	      1402UL,       1403UL,       1404UL,       1405UL,       1406UL,
436 	      1407UL,       1408UL,       1409UL,       1410UL,       1411UL,
437 	      1412UL,       1413UL,       1414UL,          0UL,          0UL,
438 	         0UL,          0UL,          0UL,          0UL,          0UL,
439 	         0UL,          0UL,
440 	}},
441 	{{
442 	     11520UL,      11521UL,      11522UL,      11523UL,      11524UL,
443 	     11525UL,      11526UL,      11527UL,      11528UL,      11529UL,
444 	     11530UL,      11531UL,      11532UL,      11533UL,      11534UL,
445 	     11535UL,      11536UL,      11537UL,      11538UL,      11539UL,
446 	     11540UL,      11541UL,      11542UL,      11543UL,      11544UL,
447 	     11545UL,      11546UL,      11547UL,      11548UL,      11549UL,
448 	     11550UL,      11551UL,
449 	}},
450 	{{
451 	     11552UL,      11553UL,      11554UL,      11555UL,      11556UL,
452 	     11557UL,          0UL,      11559UL,          0UL,          0UL,
453 	         0UL,          0UL,          0UL,      11565UL,          0UL,
454 	         0UL,          0UL,          0UL,          0UL,          0UL,
455 	         0UL,          0UL,          0UL,          0UL,          0UL,
456 	         0UL,          0UL,          0UL,          0UL,          0UL,
457 	         0UL,          0UL,
458 	}},
459 	{{
460 	      7681UL,          0UL,       7683UL,          0UL,       7685UL,
461 	         0UL,       7687UL,          0UL,       7689UL,          0UL,
462 	      7691UL,          0UL,       7693UL,          0UL,       7695UL,
463 	         0UL,       7697UL,          0UL,       7699UL,          0UL,
464 	      7701UL,          0UL,       7703UL,          0UL,       7705UL,
465 	         0UL,       7707UL,          0UL,       7709UL,          0UL,
466 	      7711UL,          0UL,
467 	}},
468 	{{
469 	      7713UL,          0UL,       7715UL,          0UL,       7717UL,
470 	         0UL,       7719UL,          0UL,       7721UL,          0UL,
471 	      7723UL,          0UL,       7725UL,          0UL,       7727UL,
472 	         0UL,       7729UL,          0UL,       7731UL,          0UL,
473 	      7733UL,          0UL,       7735UL,          0UL,       7737UL,
474 	         0UL,       7739UL,          0UL,       7741UL,          0UL,
475 	      7743UL,          0UL,
476 	}},
477 	{{
478 	      7745UL,          0UL,       7747UL,          0UL,       7749UL,
479 	         0UL,       7751UL,          0UL,       7753UL,          0UL,
480 	      7755UL,          0UL,       7757UL,          0UL,       7759UL,
481 	         0UL,       7761UL,          0UL,       7763UL,          0UL,
482 	      7765UL,          0UL,       7767UL,          0UL,       7769UL,
483 	         0UL,       7771UL,          0UL,       7773UL,          0UL,
484 	      7775UL,          0UL,
485 	}},
486 	{{
487 	      7777UL,          0UL,       7779UL,          0UL,       7781UL,
488 	         0UL,       7783UL,          0UL,       7785UL,          0UL,
489 	      7787UL,          0UL,       7789UL,          0UL,       7791UL,
490 	         0UL,       7793UL,          0UL,       7795UL,          0UL,
491 	      7797UL,          0UL,       7799UL,          0UL,       7801UL,
492 	         0UL,       7803UL,          0UL,       7805UL,          0UL,
493 	      7807UL,          0UL,
494 	}},
495 	{{
496 	      7809UL,          0UL,       7811UL,          0UL,       7813UL,
497 	         0UL,       7815UL,          0UL,       7817UL,          0UL,
498 	      7819UL,          0UL,       7821UL,          0UL,       7823UL,
499 	         0UL,       7825UL,          0UL,       7827UL,          0UL,
500 	      7829UL,          0UL,          0UL,          0UL,          0UL,
501 	         0UL,          0UL,          0UL,          0UL,          0UL,
502 	       223UL,          0UL,
503 	}},
504 	{{
505 	      7841UL,          0UL,       7843UL,          0UL,       7845UL,
506 	         0UL,       7847UL,          0UL,       7849UL,          0UL,
507 	      7851UL,          0UL,       7853UL,          0UL,       7855UL,
508 	         0UL,       7857UL,          0UL,       7859UL,          0UL,
509 	      7861UL,          0UL,       7863UL,          0UL,       7865UL,
510 	         0UL,       7867UL,          0UL,       7869UL,          0UL,
511 	      7871UL,          0UL,
512 	}},
513 	{{
514 	      7873UL,          0UL,       7875UL,          0UL,       7877UL,
515 	         0UL,       7879UL,          0UL,       7881UL,          0UL,
516 	      7883UL,          0UL,       7885UL,          0UL,       7887UL,
517 	         0UL,       7889UL,          0UL,       7891UL,          0UL,
518 	      7893UL,          0UL,       7895UL,          0UL,       7897UL,
519 	         0UL,       7899UL,          0UL,       7901UL,          0UL,
520 	      7903UL,          0UL,
521 	}},
522 	{{
523 	      7905UL,          0UL,       7907UL,          0UL,       7909UL,
524 	         0UL,       7911UL,          0UL,       7913UL,          0UL,
525 	      7915UL,          0UL,       7917UL,          0UL,       7919UL,
526 	         0UL,       7921UL,          0UL,       7923UL,          0UL,
527 	      7925UL,          0UL,       7927UL,          0UL,       7929UL,
528 	         0UL,       7931UL,          0UL,       7933UL,          0UL,
529 	      7935UL,          0UL,
530 	}},
531 	{{
532 	         0UL,          0UL,          0UL,          0UL,          0UL,
533 	         0UL,          0UL,          0UL,       7936UL,       7937UL,
534 	      7938UL,       7939UL,       7940UL,       7941UL,       7942UL,
535 	      7943UL,          0UL,          0UL,          0UL,          0UL,
536 	         0UL,          0UL,          0UL,          0UL,       7952UL,
537 	      7953UL,       7954UL,       7955UL,       7956UL,       7957UL,
538 	         0UL,          0UL,
539 	}},
540 	{{
541 	         0UL,          0UL,          0UL,          0UL,          0UL,
542 	         0UL,          0UL,          0UL,       7968UL,       7969UL,
543 	      7970UL,       7971UL,       7972UL,       7973UL,       7974UL,
544 	      7975UL,          0UL,          0UL,          0UL,          0UL,
545 	         0UL,          0UL,          0UL,          0UL,       7984UL,
546 	      7985UL,       7986UL,       7987UL,       7988UL,       7989UL,
547 	      7990UL,       7991UL,
548 	}},
549 	{{
550 	         0UL,          0UL,          0UL,          0UL,          0UL,
551 	         0UL,          0UL,          0UL,       8000UL,       8001UL,
552 	      8002UL,       8003UL,       8004UL,       8005UL,          0UL,
553 	         0UL,          0UL,          0UL,          0UL,          0UL,
554 	         0UL,          0UL,          0UL,          0UL,          0UL,
555 	      8017UL,          0UL,       8019UL,          0UL,       8021UL,
556 	         0UL,       8023UL,
557 	}},
558 	{{
559 	         0UL,          0UL,          0UL,          0UL,          0UL,
560 	         0UL,          0UL,          0UL,       8032UL,       8033UL,
561 	      8034UL,       8035UL,       8036UL,       8037UL,       8038UL,
562 	      8039UL,          0UL,          0UL,          0UL,          0UL,
563 	         0UL,          0UL,          0UL,          0UL,          0UL,
564 	         0UL,          0UL,          0UL,          0UL,          0UL,
565 	         0UL,          0UL,
566 	}},
567 	{{
568 	         0UL,          0UL,          0UL,          0UL,          0UL,
569 	         0UL,          0UL,          0UL,       8064UL,       8065UL,
570 	      8066UL,       8067UL,       8068UL,       8069UL,       8070UL,
571 	      8071UL,          0UL,          0UL,          0UL,          0UL,
572 	         0UL,          0UL,          0UL,          0UL,       8080UL,
573 	      8081UL,       8082UL,       8083UL,       8084UL,       8085UL,
574 	      8086UL,       8087UL,
575 	}},
576 	{{
577 	         0UL,          0UL,          0UL,          0UL,          0UL,
578 	         0UL,          0UL,          0UL,       8096UL,       8097UL,
579 	      8098UL,       8099UL,       8100UL,       8101UL,       8102UL,
580 	      8103UL,          0UL,          0UL,          0UL,          0UL,
581 	         0UL,          0UL,          0UL,          0UL,       8112UL,
582 	      8113UL,       8048UL,       8049UL,       8115UL,          0UL,
583 	         0UL,          0UL,
584 	}},
585 	{{
586 	         0UL,          0UL,          0UL,          0UL,          0UL,
587 	         0UL,          0UL,          0UL,       8050UL,       8051UL,
588 	      8052UL,       8053UL,       8131UL,          0UL,          0UL,
589 	         0UL,          0UL,          0UL,          0UL,          0UL,
590 	         0UL,          0UL,          0UL,          0UL,       8144UL,
591 	      8145UL,       8054UL,       8055UL,          0UL,          0UL,
592 	         0UL,          0UL,
593 	}},
594 	{{
595 	         0UL,          0UL,          0UL,          0UL,          0UL,
596 	         0UL,          0UL,          0UL,       8160UL,       8161UL,
597 	      8058UL,       8059UL,       8165UL,          0UL,          0UL,
598 	         0UL,          0UL,          0UL,          0UL,          0UL,
599 	         0UL,          0UL,          0UL,          0UL,       8056UL,
600 	      8057UL,       8060UL,       8061UL,       8179UL,          0UL,
601 	         0UL,          0UL,
602 	}},
603 	{{
604 	         0UL,          0UL,          0UL,          0UL,          0UL,
605 	         0UL,        969UL,          0UL,          0UL,          0UL,
606 	       107UL,        229UL,          0UL,          0UL,          0UL,
607 	         0UL,          0UL,          0UL,       8526UL,          0UL,
608 	         0UL,          0UL,          0UL,          0UL,          0UL,
609 	         0UL,          0UL,          0UL,          0UL,          0UL,
610 	         0UL,          0UL,
611 	}},
612 	{{
613 	      8560UL,       8561UL,       8562UL,       8563UL,       8564UL,
614 	      8565UL,       8566UL,       8567UL,       8568UL,       8569UL,
615 	      8570UL,       8571UL,       8572UL,       8573UL,       8574UL,
616 	      8575UL,          0UL,          0UL,          0UL,          0UL,
617 	         0UL,          0UL,          0UL,          0UL,          0UL,
618 	         0UL,          0UL,          0UL,          0UL,          0UL,
619 	         0UL,          0UL,
620 	}},
621 	{{
622 	         0UL,          0UL,          0UL,       8580UL,          0UL,
623 	         0UL,          0UL,          0UL,          0UL,          0UL,
624 	         0UL,          0UL,          0UL,          0UL,          0UL,
625 	         0UL,          0UL,          0UL,          0UL,          0UL,
626 	         0UL,          0UL,          0UL,          0UL,          0UL,
627 	         0UL,          0UL,          0UL,          0UL,          0UL,
628 	         0UL,          0UL,
629 	}},
630 	{{
631 	         0UL,          0UL,          0UL,          0UL,          0UL,
632 	         0UL,          0UL,          0UL,          0UL,          0UL,
633 	         0UL,          0UL,          0UL,          0UL,          0UL,
634 	         0UL,          0UL,          0UL,          0UL,          0UL,
635 	         0UL,          0UL,       9424UL,       9425UL,       9426UL,
636 	      9427UL,       9428UL,       9429UL,       9430UL,       9431UL,
637 	      9432UL,       9433UL,
638 	}},
639 	{{
640 	      9434UL,       9435UL,       9436UL,       9437UL,       9438UL,
641 	      9439UL,       9440UL,       9441UL,       9442UL,       9443UL,
642 	      9444UL,       9445UL,       9446UL,       9447UL,       9448UL,
643 	      9449UL,          0UL,          0UL,          0UL,          0UL,
644 	         0UL,          0UL,          0UL,          0UL,          0UL,
645 	         0UL,          0UL,          0UL,          0UL,          0UL,
646 	         0UL,          0UL,
647 	}},
648 	{{
649 	     11312UL,      11313UL,      11314UL,      11315UL,      11316UL,
650 	     11317UL,      11318UL,      11319UL,      11320UL,      11321UL,
651 	     11322UL,      11323UL,      11324UL,      11325UL,      11326UL,
652 	     11327UL,      11328UL,      11329UL,      11330UL,      11331UL,
653 	     11332UL,      11333UL,      11334UL,      11335UL,      11336UL,
654 	     11337UL,      11338UL,      11339UL,      11340UL,      11341UL,
655 	     11342UL,      11343UL,
656 	}},
657 	{{
658 	     11344UL,      11345UL,      11346UL,      11347UL,      11348UL,
659 	     11349UL,      11350UL,      11351UL,      11352UL,      11353UL,
660 	     11354UL,      11355UL,      11356UL,      11357UL,      11358UL,
661 	         0UL,          0UL,          0UL,          0UL,          0UL,
662 	         0UL,          0UL,          0UL,          0UL,          0UL,
663 	         0UL,          0UL,          0UL,          0UL,          0UL,
664 	         0UL,          0UL,
665 	}},
666 	{{
667 	     11361UL,          0UL,        619UL,       7549UL,        637UL,
668 	         0UL,          0UL,      11368UL,          0UL,      11370UL,
669 	         0UL,      11372UL,          0UL,        593UL,        625UL,
670 	       592UL,        594UL,          0UL,      11379UL,          0UL,
671 	         0UL,      11382UL,          0UL,          0UL,          0UL,
672 	         0UL,          0UL,          0UL,          0UL,          0UL,
673 	       575UL,        576UL,
674 	}},
675 	{{
676 	     11393UL,          0UL,      11395UL,          0UL,      11397UL,
677 	         0UL,      11399UL,          0UL,      11401UL,          0UL,
678 	     11403UL,          0UL,      11405UL,          0UL,      11407UL,
679 	         0UL,      11409UL,          0UL,      11411UL,          0UL,
680 	     11413UL,          0UL,      11415UL,          0UL,      11417UL,
681 	         0UL,      11419UL,          0UL,      11421UL,          0UL,
682 	     11423UL,          0UL,
683 	}},
684 	{{
685 	     11425UL,          0UL,      11427UL,          0UL,      11429UL,
686 	         0UL,      11431UL,          0UL,      11433UL,          0UL,
687 	     11435UL,          0UL,      11437UL,          0UL,      11439UL,
688 	         0UL,      11441UL,          0UL,      11443UL,          0UL,
689 	     11445UL,          0UL,      11447UL,          0UL,      11449UL,
690 	         0UL,      11451UL,          0UL,      11453UL,          0UL,
691 	     11455UL,          0UL,
692 	}},
693 	{{
694 	     11457UL,          0UL,      11459UL,          0UL,      11461UL,
695 	         0UL,      11463UL,          0UL,      11465UL,          0UL,
696 	     11467UL,          0UL,      11469UL,          0UL,      11471UL,
697 	         0UL,      11473UL,          0UL,      11475UL,          0UL,
698 	     11477UL,          0UL,      11479UL,          0UL,      11481UL,
699 	         0UL,      11483UL,          0UL,      11485UL,          0UL,
700 	     11487UL,          0UL,
701 	}},
702 	{{
703 	     11489UL,          0UL,      11491UL,          0UL,          0UL,
704 	         0UL,          0UL,          0UL,          0UL,          0UL,
705 	         0UL,      11500UL,          0UL,      11502UL,          0UL,
706 	         0UL,          0UL,          0UL,      11507UL,          0UL,
707 	         0UL,          0UL,          0UL,          0UL,          0UL,
708 	         0UL,          0UL,          0UL,          0UL,          0UL,
709 	         0UL,          0UL,
710 	}},
711 	{{
712 	     42561UL,          0UL,      42563UL,          0UL,      42565UL,
713 	         0UL,      42567UL,          0UL,      42569UL,          0UL,
714 	     42571UL,          0UL,      42573UL,          0UL,      42575UL,
715 	         0UL,      42577UL,          0UL,      42579UL,          0UL,
716 	     42581UL,          0UL,      42583UL,          0UL,      42585UL,
717 	         0UL,      42587UL,          0UL,      42589UL,          0UL,
718 	     42591UL,          0UL,
719 	}},
720 	{{
721 	     42593UL,          0UL,      42595UL,          0UL,      42597UL,
722 	         0UL,      42599UL,          0UL,      42601UL,          0UL,
723 	     42603UL,          0UL,      42605UL,          0UL,          0UL,
724 	         0UL,          0UL,          0UL,          0UL,          0UL,
725 	         0UL,          0UL,          0UL,          0UL,          0UL,
726 	         0UL,          0UL,          0UL,          0UL,          0UL,
727 	         0UL,          0UL,
728 	}},
729 	{{
730 	     42625UL,          0UL,      42627UL,          0UL,      42629UL,
731 	         0UL,      42631UL,          0UL,      42633UL,          0UL,
732 	     42635UL,          0UL,      42637UL,          0UL,      42639UL,
733 	         0UL,      42641UL,          0UL,      42643UL,          0UL,
734 	     42645UL,          0UL,      42647UL,          0UL,          0UL,
735 	         0UL,          0UL,          0UL,          0UL,          0UL,
736 	         0UL,          0UL,
737 	}},
738 	{{
739 	         0UL,          0UL,      42787UL,          0UL,      42789UL,
740 	         0UL,      42791UL,          0UL,      42793UL,          0UL,
741 	     42795UL,          0UL,      42797UL,          0UL,      42799UL,
742 	         0UL,          0UL,          0UL,      42803UL,          0UL,
743 	     42805UL,          0UL,      42807UL,          0UL,      42809UL,
744 	         0UL,      42811UL,          0UL,      42813UL,          0UL,
745 	     42815UL,          0UL,
746 	}},
747 	{{
748 	     42817UL,          0UL,      42819UL,          0UL,      42821UL,
749 	         0UL,      42823UL,          0UL,      42825UL,          0UL,
750 	     42827UL,          0UL,      42829UL,          0UL,      42831UL,
751 	         0UL,      42833UL,          0UL,      42835UL,          0UL,
752 	     42837UL,          0UL,      42839UL,          0UL,      42841UL,
753 	         0UL,      42843UL,          0UL,      42845UL,          0UL,
754 	     42847UL,          0UL,
755 	}},
756 	{{
757 	     42849UL,          0UL,      42851UL,          0UL,      42853UL,
758 	         0UL,      42855UL,          0UL,      42857UL,          0UL,
759 	     42859UL,          0UL,      42861UL,          0UL,      42863UL,
760 	         0UL,          0UL,          0UL,          0UL,          0UL,
761 	         0UL,          0UL,          0UL,          0UL,          0UL,
762 	     42874UL,          0UL,      42876UL,          0UL,       7545UL,
763 	     42879UL,          0UL,
764 	}},
765 	{{
766 	     42881UL,          0UL,      42883UL,          0UL,      42885UL,
767 	         0UL,      42887UL,          0UL,          0UL,          0UL,
768 	         0UL,      42892UL,          0UL,        613UL,          0UL,
769 	         0UL,      42897UL,          0UL,      42899UL,          0UL,
770 	         0UL,          0UL,          0UL,          0UL,          0UL,
771 	         0UL,          0UL,          0UL,          0UL,          0UL,
772 	         0UL,          0UL,
773 	}},
774 	{{
775 	     42913UL,          0UL,      42915UL,          0UL,      42917UL,
776 	         0UL,      42919UL,          0UL,      42921UL,          0UL,
777 	       614UL,          0UL,          0UL,          0UL,          0UL,
778 	         0UL,          0UL,          0UL,          0UL,          0UL,
779 	         0UL,          0UL,          0UL,          0UL,          0UL,
780 	         0UL,          0UL,          0UL,          0UL,          0UL,
781 	         0UL,          0UL,
782 	}},
783 	{{
784 	         0UL,      65345UL,      65346UL,      65347UL,      65348UL,
785 	     65349UL,      65350UL,      65351UL,      65352UL,      65353UL,
786 	     65354UL,      65355UL,      65356UL,      65357UL,      65358UL,
787 	     65359UL,      65360UL,      65361UL,      65362UL,      65363UL,
788 	     65364UL,      65365UL,      65366UL,      65367UL,      65368UL,
789 	     65369UL,      65370UL,          0UL,          0UL,          0UL,
790 	         0UL,          0UL,
791 	}},
792 	{{
793 	     66600UL,      66601UL,      66602UL,      66603UL,      66604UL,
794 	     66605UL,      66606UL,      66607UL,      66608UL,      66609UL,
795 	     66610UL,      66611UL,      66612UL,      66613UL,      66614UL,
796 	     66615UL,      66616UL,      66617UL,      66618UL,      66619UL,
797 	     66620UL,      66621UL,      66622UL,      66623UL,      66624UL,
798 	     66625UL,      66626UL,      66627UL,      66628UL,      66629UL,
799 	     66630UL,      66631UL,
800 	}},
801 	{{
802 	     66632UL,      66633UL,      66634UL,      66635UL,      66636UL,
803 	     66637UL,      66638UL,      66639UL,          0UL,          0UL,
804 	         0UL,          0UL,          0UL,          0UL,          0UL,
805 	         0UL,          0UL,          0UL,          0UL,          0UL,
806 	         0UL,          0UL,          0UL,          0UL,          0UL,
807 	         0UL,          0UL,          0UL,          0UL,          0UL,
808 	         0UL,          0UL,
809 	}},
810 };
811 
812 /*
813  * Table accessor.
814  */
815 unsigned long
idn__sparsemap_getlowercase(unsigned long v)816 idn__sparsemap_getlowercase(unsigned long v) {
817 	int idx0, idx1, idx2;
818 
819 	if (v > UTF32_MAX)
820 		return (0);
821 	idx0 = v >> (LOWERCASE_BITS_1 + LOWERCASE_BITS_2);
822 	idx1 = (v >> LOWERCASE_BITS_2) & ((1 << LOWERCASE_BITS_1) - 1);
823 	idx2 = v & ((1 << LOWERCASE_BITS_2) - 1);
824 	return (unsigned long) lowercase_table[lowercase_imap[lowercase_imap[idx0] + idx1]].tbl[idx2];
825 }
826 
827 /*
828  * Special lowercase conversions
829  */
830 const idn__specialcase_t special_lowercases[] = {
831 	{0x000049, "az", idn__casecontext_notbeforedot, {0x0131UL, 0x0000UL, 0x0000UL}, 3},
832 	{0x000049, "tr", idn__casecontext_notbeforedot, {0x0131UL, 0x0000UL, 0x0000UL}, 2},
833 	{0x000049, "lt", idn__casecontext_moreabove, {0x0069UL, 0x0307UL, 0x0000UL}, 1},
834 	{0x00004a, "lt", idn__casecontext_moreabove, {0x006aUL, 0x0307UL, 0x0000UL}, 1},
835 	{0x0000cc, "lt", NULL, {0x0069UL, 0x0307UL, 0x0300UL}, 1},
836 	{0x0000cd, "lt", NULL, {0x0069UL, 0x0307UL, 0x0301UL}, 1},
837 	{0x000128, "lt", NULL, {0x0069UL, 0x0307UL, 0x0303UL}, 1},
838 	{0x00012e, "lt", idn__casecontext_moreabove, {0x012fUL, 0x0307UL, 0x0000UL}, 1},
839 	{0x000130, "az", NULL, {0x0069UL, 0x0000UL, 0x0000UL}, 3},
840 	{0x000130, "tr", NULL, {0x0069UL, 0x0000UL, 0x0000UL}, 2},
841 	{0x000130, NULL, NULL, {0x0069UL, 0x0307UL, 0x0000UL}, 1},
842 	{0x000307, "az", idn__casecontext_afteri, {0x0000UL, 0x0000UL, 0x0000UL}, 2},
843 	{0x000307, "tr", idn__casecontext_afteri, {0x0000UL, 0x0000UL, 0x0000UL}, 1},
844 	{0x0003a3, NULL, idn__casecontext_finalsigma, {0x03c2UL, 0x0000UL, 0x0000UL}, 1},
845 	{0, NULL, NULL, {0UL, 0UL, 0UL}, 0}
846 };
847