1 /*
2  * Do not edit this file!
3  * This file is generated from:
4  *    UnicodeData.txt (version 6.3.0)
5  *    ArabicShaping.txt (version 6.3.0)
6  */
7 
8 #include <stddef.h>
9 #include <idn/utf32.h>
10 #include <idn/auto/joiningtype.h>
11 
12 /*
13  * Joining type tables.
14  */
15 #define JOININGTYPE_BITS_0	9
16 #define JOININGTYPE_BITS_1	7
17 #define JOININGTYPE_BITS_2	5
18 
19 static const unsigned short joiningtype_imap[] = {
20 	  272,   400,   528,   656,   784,   784,   784,   784,
21 	  784,   784,   912,   784,   784,   784,   784,  1040,
22 	 1168,  1296,   784,   784,   784,   784,  1424,   784,
23 	  784,   784,   784,   784,   784,  1552,   784,   784,
24 	  784,   784,   784,   784,   784,   784,   784,   784,
25 	  784,   784,   784,   784,   784,   784,   784,   784,
26 	  784,   784,   784,   784,   784,   784,   784,   784,
27 	  784,   784,   784,   784,   784,   784,   784,   784,
28 	  784,   784,   784,   784,   784,   784,   784,   784,
29 	  784,   784,   784,   784,   784,   784,   784,   784,
30 	  784,   784,   784,   784,   784,   784,   784,   784,
31 	  784,   784,   784,   784,   784,   784,   784,   784,
32 	  784,   784,   784,   784,   784,   784,   784,   784,
33 	  784,   784,   784,   784,   784,   784,   784,   784,
34 	  784,   784,   784,   784,   784,   784,   784,   784,
35 	  784,   784,   784,   784,   784,   784,   784,   784,
36 	  784,   784,   784,   784,   784,   784,   784,   784,
37 	  784,   784,   784,   784,   784,   784,   784,   784,
38 	  784,   784,   784,   784,   784,   784,   784,   784,
39 	  784,   784,   784,   784,   784,   784,   784,   784,
40 	  784,   784,   784,   784,   784,   784,   784,   784,
41 	  784,   784,   784,   784,   784,   784,   784,   784,
42 	  784,   784,   784,   784,   784,   784,   784,   784,
43 	  784,   784,   784,   784,   784,   784,   784,   784,
44 	  784,   784,   784,   784,   784,   784,   784,   784,
45 	  784,   784,   784,   784,   784,   784,   784,   784,
46 	  784,   784,   784,   784,   784,   784,   784,   784,
47 	  784,   784,   784,   784,   784,   784,   784,   784,
48 	 1680,   784,   784,   784,   784,   784,   784,   784,
49 	  784,   784,   784,   784,   784,   784,   784,   784,
50 	  784,   784,   784,   784,   784,   784,   784,   784,
51 	  784,   784,   784,   784,   784,   784,   784,   784,
52 	  784,   784,   784,   784,   784,   784,   784,   784,
53 	  784,   784,   784,   784,   784,   784,   784,   784,
54 	    0,     0,     0,     0,     0,     1,     0,     0,
55 	    0,     0,     0,     0,     0,     0,     0,     0,
56 	    0,     0,     0,     0,     0,     0,     0,     0,
57 	    2,     2,     2,     3,     0,     0,     0,     0,
58 	    0,     0,     0,     0,     4,     0,     0,     0,
59 	    0,     0,     0,     0,     5,     6,     7,     0,
60 	    8,     9,    10,    11,    12,    13,    14,    15,
61 	   16,    17,    18,    19,     0,    20,    21,    22,
62 	   23,    24,    25,     0,     0,    26,     0,    27,
63 	   28,    29,    30,    31,    32,    33,    34,    31,
64 	   35,    33,    36,    37,    35,    33,    38,    31,
65 	   32,    39,    40,    31,    41,     0,    42,     0,
66 	    0,    43,    44,    31,     0,    39,    45,    31,
67 	    0,     0,    34,    31,     0,     0,    46,     0,
68 	    0,    47,    48,     0,     0,    49,    50,     0,
69 	   51,    52,     0,    53,    54,    55,    56,     0,
70 	    0,    57,    58,    59,    60,     0,     0,     0,
71 	    0,     0,     0,     0,     0,     0,     0,     0,
72 	    0,     0,     0,     0,     0,     0,     0,     0,
73 	    0,     0,    61,     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 	   62,    62,    63,    63,     0,    64,    65,     0,
78 	   66,    13,    13,    67,    68,    69,     0,     0,
79 	    0,    70,     0,     0,     0,     0,     0,     0,
80 	   71,     0,    72,    73,     0,     0,     0,     0,
81 	   74,    75,    41,    76,    77,    78,     0,    79,
82 	    0,    80,     0,     0,     0,     0,    81,    82,
83 	    0,     0,     0,     0,     0,     0,     2,    83,
84 	    0,     0,     0,     0,     0,     0,     0,     0,
85 	    0,     0,     0,     0,     0,     0,     0,     0,
86 	   84,    85,     0,    86,     0,     0,    87,    88,
87 	    0,     0,     0,     0,     0,     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,     0,     0,     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 	    0,     0,     0,     0,     0,     0,     0,    89,
99 	    0,     0,     0,    90,     0,     0,     0,     2,
100 	    0,     0,     0,     0,     0,     0,     0,     0,
101 	    0,     0,     0,     0,     0,     0,     0,     0,
102 	    0,    91,     0,     0,    92,     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,     0,     0,     0,     0,     0,     0,
125 	    0,     0,     0,     0,     0,     0,     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,    93,    90,     0,     0,    94,
141 	    0,     0,     0,     0,     0,     0,     0,     0,
142 	   95,    96,    13,    97,     0,     0,    98,    99,
143 	    0,   100,   101,     0,    28,   102,     0,     0,
144 	    0,   103,   104,     0,     0,   105,    32,   106,
145 	    0,     0,     0,     0,     0,     0,     0,   107,
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,     0,     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 	    0,     0,     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 	  108,     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 	    3,   109,     0,     0,     0,     0,     0,    90,
165 	    0,     0,     0,     0,     0,     0,     0,   110,
166 	    0,     0,     0,     0,     0,     0,     0,     0,
167 	    0,     0,     0,     0,     0,     0,     0,   111,
168 	    0,     0,     0,     0,     0,     0,     0,     0,
169 	    0,     0,     0,     0,     0,     0,     0,     0,
170 	    0,     0,     0,     0,     0,     0,     0,     0,
171 	    0,     0,     0,     0,     0,     0,     0,     0,
172 	    0,     0,     0,     0,     0,     0,     0,     0,
173 	    0,     0,     0,     0,     0,     0,     0,     0,
174 	    0,     0,     0,     0,     0,     0,     0,     0,
175 	    0,     0,     0,     0,     0,     0,     0,     0,
176 	  112,   113,     0,     0,     0,     0,     0,     0,
177 	    0,     0,     0,     0,     0,     0,     0,     0,
178 	    0,     0,     0,     0,     0,     0,     0,     0,
179 	    0,     0,     0,     0,     0,     0,     0,     0,
180 	    0,     0,     0,     0,     0,     0,     0,     0,
181 	    0,     0,     0,     0,     0,     0,     0,     0,
182 	   32,   114,   109,     0,    77,   115,     0,     0,
183 	   28,   116,     0,     0,    77,   117,     0,     0,
184 	    0,     0,     0,     0,     0,     0,     0,     0,
185 	    0,     0,     0,     0,     0,     0,     0,     0,
186 	    0,     0,     0,     0,     0,     0,     0,     0,
187 	    0,     0,     0,     0,     0,     0,     0,     0,
188 	    0,     0,     0,     0,     0,   118,     0,     0,
189 	    0,     0,     0,     0,     0,     0,     0,     0,
190 	    0,     0,     0,     0,     0,     0,     0,     0,
191 	    0,     0,     0,     0,     0,     0,     0,     0,
192 	    0,     0,     0,     0,     0,     0,     0,     0,
193 	    0,     0,     0,     0,     0,     0,     0,     0,
194 	    0,     0,     0,     0,     0,     0,     0,     0,
195 	    0,     0,     0,     0,     0,     0,     0,     0,
196 	    0,     0,     0,     0,     0,     0,     0,     0,
197 	    0,     0,     0,     0,     0,     0,     0,     0,
198 	    0,     0,     0,     0,     0,     0,     0,     0,
199 	    0,     0,     0,     0,     0,     0,     0,     0,
200 	    0,     0,     0,     0,     0,     0,     0,     0,
201 	    0,     0,     0,     0,     0,     0,     0,     0,
202 	    0,     0,     0,     0,     0,     0,     0,     0,
203 	    0,     0,     0,     0,     0,     0,     0,     0,
204 	    0,     0,     0,     0,     0,     0,     0,     0,
205 	    0,     0,     0,     0,     0,     0,     0,     0,
206 	    0,     0,     0,     0,     0,     0,     0,     0,
207 	    0,     0,     0,     0,     0,     0,     0,     0,
208 	    0,     0,     0,     0,     0,     0,     0,     0,
209 	    0,     0,     0,     0,     0,     0,     0,     0,
210 	    0,     0,     0,     0,     0,     0,     0,     0,
211 	    0,     0,     0,     0,     0,     0,     0,     0,
212 	    0,     0,     0,     0,     0,     0,     0,     0,
213 	    0,     0,     0,     0,   119,     0,     0,     0,
214 	    0,     0,     0,     0,     0,     0,     0,     0,
215 	    0,     0,     0,   120,   121,    91,     0,     0,
216 	    0,     0,   122,     0,     0,     0,     0,     0,
217 	    0,     0,     0,     0,     0,     0,     0,     0,
218 	    0,     0,     0,     0,     0,     0,     0,     0,
219 	    0,     0,     0,     0,     0,     0,     0,     0,
220 	    0,     0,     0,     0,     0,     0,     0,     0,
221 	    0,     0,     0,     0,     0,     0,     0,     0,
222 	    0,     0,     0,     0,     0,     0,     0,     0,
223 	    0,     0,     0,     0,     0,     0,     0,     0,
224 	    0,     0,     0,     0,     0,     0,     0,     0,
225 	    0,     0,     0,     0,     0,     0,     0,     0,
226 	    0,     0,     0,     0,     0,     0,     0,     0,
227 	    0,     0,     0,     0,     0,     0,     0,     0,
228 	    0,     0,     0,     0,     0,     0,     0,     0,
229 	    0,     0,     0,     0,     0,     0,     0,     0,
230 	   32,     2,     2,     2,     0,     0,     0,     0,
231 	    2,     2,     2,     2,     2,     2,     2,     3,
232 	    0,     0,     0,     0,     0,     0,     0,     0,
233 	    0,     0,     0,     0,     0,     0,     0,     0,
234 	    0,     0,     0,     0,     0,     0,     0,     0,
235 	    0,     0,     0,     0,     0,     0,     0,     0,
236 	    0,     0,     0,     0,     0,     0,     0,     0,
237 	    0,     0,     0,     0,     0,     0,     0,     0,
238 	    0,     0,     0,     0,     0,     0,     0,     0,
239 	    0,     0,     0,     0,     0,     0,     0,     0,
240 	    0,     0,     0,     0,     0,     0,     0,     0,
241 	    0,     0,     0,     0,     0,     0,     0,     0,
242 	    0,     0,     0,     0,     0,     0,     0,     0,
243 	    0,     0,     0,     0,     0,     0,     0,     0,
244 	    0,     0,     0,     0,     0,     0,     0,     0,
245 	    0,     0,     0,     0,     0,     0,     0,     0,
246 };
247 
248 static const struct {
249 	unsigned char tbl[32];
250 } joiningtype_table[] = {
251 	{{
252 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
253 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
254 	}},
255 	{{
256 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,
257 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
258 	}},
259 	{{
260 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
261 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
262 	}},
263 	{{
264 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,
265 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
266 	}},
267 	{{
268 	 0,  0,  0,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,
269 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
270 	}},
271 	{{
272 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
273 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
274 	}},
275 	{{
276 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
277 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  5,
278 	}},
279 	{{
280 	 0,  5,  5,  0,  5,  5,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
281 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
282 	}},
283 	{{
284 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,
285 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  5,  0,  0,  0,
286 	}},
287 	{{
288 	 3,  0,  1,  1,  1,  1,  3,  1,  3,  1,  3,  3,  3,  3,  3,  1,  1,
289 	 1,  1,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
290 	}},
291 	{{
292 	 4,  3,  3,  3,  3,  3,  3,  3,  1,  3,  3,  5,  5,  5,  5,  5,  5,
293 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
294 	}},
295 	{{
296 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  5,
297 	 1,  1,  1,  0,  1,  1,  1,  3,  3,  3,  3,  3,  3,  3,  3,
298 	}},
299 	{{
300 	 3,  3,  3,  3,  3,  3,  3,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,
301 	 1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  3,  3,  3,  3,  3,
302 	}},
303 	{{
304 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
305 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
306 	}},
307 	{{
308 	 1,  3,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  1,  3,  1,  3,
309 	 3,  1,  1,  0,  1,  5,  5,  5,  5,  5,  5,  5,  0,  0,  5,
310 	}},
311 	{{
312 	 5,  5,  5,  5,  5,  0,  0,  5,  5,  0,  5,  5,  5,  5,  1,  1,  0,
313 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  0,  0,  3,
314 	}},
315 	{{
316 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  1,
317 	 5,  3,  3,  3,  1,  1,  1,  1,  1,  3,  3,  3,  3,  1,  3,
318 	}},
319 	{{
320 	 3,  3,  3,  3,  3,  3,  3,  3,  1,  3,  1,  3,  1,  3,  3,  1,  5,
321 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
322 	}},
323 	{{
324 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  1,  3,  3,  3,
325 	 3,  3,  3,  3,  3,  3,  3,  3,  1,  1,  1,  3,  3,  3,  3,
326 	}},
327 	{{
328 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  1,  1,  3,  3,  3,  3,
329 	 1,  3,  1,  1,  3,  3,  3,  1,  1,  3,  3,  3,  3,  3,  3,
330 	}},
331 	{{
332 	 0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
333 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
334 	}},
335 	{{
336 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,  3,
337 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
338 	}},
339 	{{
340 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  5,  5,  5,  5,  5,  5,
341 	 5,  5,  5,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,
342 	}},
343 	{{
344 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
345 	 0,  0,  0,  0,  0,  5,  5,  5,  5,  0,  5,  5,  5,  5,  5,
346 	}},
347 	{{
348 	 5,  5,  5,  5,  0,  5,  5,  5,  0,  5,  5,  5,  5,  5,  0,  0,  0,
349 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
350 	}},
351 	{{
352 	 1,  3,  3,  3,  3,  3,  1,  3,  3,  1,  3,  3,  3,  3,  3,  1,  3,
353 	 3,  3,  3,  1,  3,  0,  0,  0,  5,  5,  5,  0,  0,  0,  0,
354 	}},
355 	{{
356 	 3,  0,  3,  3,  3,  3,  3,  3,  3,  3,  1,  1,  1,  0,  0,  0,  0,
357 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
358 	}},
359 	{{
360 	 0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
361 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,
362 	}},
363 	{{
364 	 5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
365 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
366 	}},
367 	{{
368 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
369 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  5,  0,  0,  0,
370 	}},
371 	{{
372 	 0,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  5,  0,  0,  0,
373 	 5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
374 	}},
375 	{{
376 	 0,  0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
377 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
378 	}},
379 	{{
380 	 0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
381 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
382 	}},
383 	{{
384 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
385 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,
386 	}},
387 	{{
388 	 0,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,
389 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
390 	}},
391 	{{
392 	 0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
393 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
394 	}},
395 	{{
396 	 0,  5,  5,  0,  0,  0,  0,  5,  5,  0,  0,  5,  5,  5,  0,  0,  0,
397 	 5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
398 	}},
399 	{{
400 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,
401 	 5,  0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
402 	}},
403 	{{
404 	 0,  5,  5,  5,  5,  5,  0,  5,  5,  0,  0,  0,  0,  5,  0,  0,  0,
405 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
406 	}},
407 	{{
408 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
409 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  5,
410 	}},
411 	{{
412 	 0,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,
413 	 0,  0,  0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
414 	}},
415 	{{
416 	 0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
417 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
418 	}},
419 	{{
420 	 5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,
421 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
422 	}},
423 	{{
424 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
425 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,
426 	}},
427 	{{
428 	 5,  0,  0,  0,  0,  0,  5,  5,  5,  0,  5,  5,  5,  5,  0,  0,  0,
429 	 0,  0,  0,  0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
430 	}},
431 	{{
432 	 0,  0,  0,  0,  0,  0,  5,  0,  0,  0,  0,  0,  5,  5,  0,  0,  0,
433 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
434 	}},
435 	{{
436 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,  0,  0,  0,
437 	 0,  5,  5,  5,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
438 	}},
439 	{{
440 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
441 	 5,  0,  0,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,
442 	}},
443 	{{
444 	 0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,
445 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
446 	}},
447 	{{
448 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
449 	 5,  0,  0,  5,  5,  5,  5,  5,  5,  0,  5,  5,  0,  0,  0,
450 	}},
451 	{{
452 	 0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  0,  0,  0,
453 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
454 	}},
455 	{{
456 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
457 	 0,  0,  0,  0,  0,  0,  0,  5,  5,  0,  0,  0,  0,  0,  0,
458 	}},
459 	{{
460 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
461 	 0,  0,  0,  0,  5,  0,  5,  0,  5,  0,  0,  0,  0,  0,  0,
462 	}},
463 	{{
464 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
465 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,
466 	}},
467 	{{
468 	 5,  5,  5,  5,  5,  0,  5,  5,  0,  0,  0,  0,  0,  5,  5,  5,  5,
469 	 5,  5,  5,  5,  5,  5,  5,  0,  5,  5,  5,  5,  5,  5,  5,
470 	}},
471 	{{
472 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
473 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,
474 	}},
475 	{{
476 	 0,  0,  0,  0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
477 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
478 	}},
479 	{{
480 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,
481 	 0,  5,  5,  5,  5,  5,  5,  0,  5,  5,  0,  0,  5,  5,  0,
482 	}},
483 	{{
484 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
485 	 0,  0,  0,  0,  0,  0,  0,  5,  5,  0,  0,  0,  0,  5,  5,
486 	}},
487 	{{
488 	 5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
489 	 5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
490 	}},
491 	{{
492 	 0,  0,  5,  0,  0,  5,  5,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,
493 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
494 	}},
495 	{{
496 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
497 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,
498 	}},
499 	{{
500 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
501 	 0,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
502 	}},
503 	{{
504 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
505 	 0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
506 	}},
507 	{{
508 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
509 	 0,  0,  0,  5,  5,  0,  5,  5,  5,  5,  5,  5,  5,  0,  0,
510 	}},
511 	{{
512 	 0,  0,  0,  0,  0,  0,  5,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,
513 	 5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
514 	}},
515 	{{
516 	 0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  4,  5,  5,  5,  0,  0,  0,
517 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
518 	}},
519 	{{
520 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
521 	 3,  3,  3,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,
522 	}},
523 	{{
524 	 0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
525 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
526 	}},
527 	{{
528 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  5,  3,  0,  0,  0,  0,  0,  0,
529 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
530 	}},
531 	{{
532 	 5,  5,  5,  0,  0,  0,  0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
533 	 0,  5,  0,  0,  0,  0,  0,  0,  5,  5,  5,  0,  0,  0,  0,
534 	}},
535 	{{
536 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
537 	 0,  0,  0,  0,  0,  0,  5,  5,  0,  0,  5,  0,  0,  0,  0,
538 	}},
539 	{{
540 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
541 	 0,  0,  0,  0,  0,  5,  0,  5,  5,  5,  5,  5,  5,  5,  0,
542 	}},
543 	{{
544 	 5,  0,  5,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,
545 	 0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  5,
546 	}},
547 	{{
548 	 5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
549 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
550 	}},
551 	{{
552 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
553 	 0,  0,  0,  5,  0,  5,  5,  5,  5,  5,  0,  5,  0,  0,  0,
554 	}},
555 	{{
556 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,
557 	 5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
558 	}},
559 	{{
560 	 5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
561 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
562 	}},
563 	{{
564 	 0,  0,  5,  5,  5,  5,  0,  0,  5,  5,  0,  5,  0,  0,  0,  0,  0,
565 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
566 	}},
567 	{{
568 	 0,  0,  0,  0,  0,  0,  5,  0,  5,  5,  0,  0,  0,  5,  0,  5,  5,
569 	 5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
570 	}},
571 	{{
572 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,
573 	 5,  5,  5,  0,  0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
574 	}},
575 	{{
576 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,
577 	 5,  5,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
578 	}},
579 	{{
580 	 5,  0,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  5,  0,  0,  0,
581 	 0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
582 	}},
583 	{{
584 	 5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
585 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,
586 	}},
587 	{{
588 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  4,  5,  5,  0,
589 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
590 	}},
591 	{{
592 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  0,  0,
593 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
594 	}},
595 	{{
596 	 5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  0,
597 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
598 	}},
599 	{{
600 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,
601 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
602 	}},
603 	{{
604 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
605 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
606 	}},
607 	{{
608 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,
609 	 5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
610 	}},
611 	{{
612 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
613 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,
614 	}},
615 	{{
616 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  0,  0,  0,
617 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
618 	}},
619 	{{
620 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
621 	 0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  0,  0,  0,  0,  0,
622 	}},
623 	{{
624 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,
625 	 5,  5,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,
626 	}},
627 	{{
628 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,
629 	 5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
630 	}},
631 	{{
632 	 0,  0,  5,  0,  0,  0,  5,  0,  0,  0,  0,  5,  0,  0,  0,  0,  0,
633 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
634 	}},
635 	{{
636 	 0,  0,  0,  0,  0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
637 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
638 	}},
639 	{{
640 	 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
641 	 3,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
642 	}},
643 	{{
644 	 0,  0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
645 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
646 	}},
647 	{{
648 	 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
649 	 5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
650 	}},
651 	{{
652 	 0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,
653 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
654 	}},
655 	{{
656 	 0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
657 	 5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
658 	}},
659 	{{
660 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
661 	 0,  0,  5,  0,  0,  5,  5,  5,  5,  0,  0,  5,  0,  0,  0,
662 	}},
663 	{{
664 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  0,  0,
665 	 5,  5,  0,  0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
666 	}},
667 	{{
668 	 0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,  0,
669 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
670 	}},
671 	{{
672 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,
673 	 0,  5,  5,  5,  0,  0,  5,  5,  0,  0,  0,  0,  0,  5,  5,
674 	}},
675 	{{
676 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  0,  0,  0,
677 	 0,  0,  0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
678 	}},
679 	{{
680 	 0,  0,  0,  0,  0,  5,  0,  0,  5,  0,  0,  0,  0,  5,  0,  0,  0,
681 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
682 	}},
683 	{{
684 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
685 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,
686 	}},
687 	{{
688 	 5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
689 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
690 	}},
691 	{{
692 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
693 	 0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  0,  0,  0,  0,
694 	}},
695 	{{
696 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
697 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
698 	}},
699 	{{
700 	 0,  5,  5,  5,  0,  5,  5,  0,  0,  0,  0,  0,  5,  5,  5,  5,  0,
701 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
702 	}},
703 	{{
704 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
705 	 0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  0,  0,  0,  0,  5,
706 	}},
707 	{{
708 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
709 	 0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,
710 	}},
711 	{{
712 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
713 	 0,  0,  5,  5,  5,  5,  0,  0,  5,  5,  0,  0,  5,  0,  0,
714 	}},
715 	{{
716 	 0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  0,  5,  5,  5,  5,
717 	 5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
718 	}},
719 	{{
720 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
721 	 0,  0,  0,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,
722 	}},
723 	{{
724 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  5,  0,  0,  5,
725 	 5,  5,  5,  5,  5,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,
726 	}},
727 	{{
728 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,
729 	 5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
730 	}},
731 	{{
732 	 0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,
733 	 0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
734 	}},
735 	{{
736 	 5,  5,  5,  0,  0,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,
737 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
738 	}},
739 	{{
740 	 0,  0,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
741 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
742 	}},
743 };
744 
745 /*
746  * Table accessor.
747  */
748 idn__joiningtype_t
idn__sparsemap_getjoiningtype(unsigned long v)749 idn__sparsemap_getjoiningtype(unsigned long v) {
750 	int idx0, idx1, idx2;
751 
752 	if (v > UTF32_MAX)
753 		return (idn__joiningtype_unknown);
754 	idx0 = v >> (JOININGTYPE_BITS_1 + JOININGTYPE_BITS_2);
755 	idx1 = (v >> JOININGTYPE_BITS_2) & ((1 << JOININGTYPE_BITS_1) - 1);
756 	idx2 = v & ((1 << JOININGTYPE_BITS_2) - 1);
757 	return (idn__joiningtype_t) joiningtype_table[joiningtype_imap[joiningtype_imap[idx0] + idx1]].tbl[idx2];
758 }
759