new upstream release (3.3.0); modify package compatibility for Stretch
[ossec-hids.git] / src / os_regex / os_regex_maps.c
1 /* Copyright (C) 2009 Trend Micro Inc.
2  * All right reserved.
3  *
4  * This program is a free software; you can redistribute it
5  * and/or modify it under the terms of the GNU General Public
6  * License (version 2) as published by the FSF - Free Software
7  * Foundation.
8  */
9
10 #include "os_regex.h"
11 #include "os_regex_internal.h"
12
13 /* Hostname charmap
14  * Available chars: a-z, A-Z, 0-9, -, _, ., @ /
15  */
16 const unsigned char hostname_map[256] = {
17     0, 0, 2, 3, 4, 5, 6, 7,
18     8, 9, 10, 11, 12, 13, 14, 15,
19     16, 17, 18, 19, 20, 21, 22, 23,
20     24, 25, 26, 27, 28, 29, 30, 31,
21     32, 33, 34, 35, 36, 37, 38, 39,
22     1, 1, 42, 43, 44, 1, 1, 1,
23     1, 1, 1, 1, 1, 1, 1, 1,
24     1, 1, 58, 59, 60, 61, 62, 63,
25     1, 1, 1, 1, 1, 1, 1, 1,
26     1, 1, 1, 1, 1, 1, 1, 1,
27     1, 1, 1, 1, 1, 1, 1, 1,
28     1, 1, 1, 91, 92, 93, 94, 1,
29     96, 1, 1, 1, 1, 1, 1, 1,
30     1, 1, 1, 1, 1, 1, 1, 1,
31     1, 1, 1, 1, 1, 1, 1, 1,
32     1, 1, 1, 123, 124, 125, 126, 127,
33     128, 129, 130, 131, 132, 133, 134, 135,
34     136, 137, 138, 139, 140, 141, 142, 143,
35     144, 145, 146, 147, 148, 149, 150, 151,
36     152, 153, 154, 155, 156, 157, 158, 159,
37     160, 161, 162, 163, 164, 165, 166, 167,
38     168, 169, 170, 171, 172, 173, 174, 175,
39     176, 177, 178, 179, 180, 181, 182, 183,
40     184, 185, 186, 187, 188, 189, 190, 191,
41     192, 193, 194, 195, 196, 197, 198, 199,
42     200, 201, 202, 203, 204, 205, 206, 207,
43     208, 209, 210, 211, 212, 213, 214, 215,
44     216, 217, 218, 219, 220, 221, 222, 223,
45     224, 225, 226, 227, 228, 229, 230, 231,
46     232, 233, 234, 235, 236, 237, 238, 239,
47     240, 241, 242, 243, 244, 245, 246, 247,
48     240, 241, 242, 243, 244, 245, 246, 247,
49 };
50
51 const unsigned char charmap[256] = {
52     0, 1, 2, 3, 4, 5, 6, 7,
53     8, 9, 10, 11, 12, 13, 14, 15,
54     16, 17, 18, 19, 20, 21, 22, 23,
55     24, 25, 26, 27, 28, 29, 30, 31,
56     32, 33, 34, 35, 36, 37, 38, 39,
57     40, 41, 42, 43, 44, 45, 46, 47,
58     48, 49, 50, 51, 52, 53, 54, 55,
59     56, 57, 58, 59, 60, 61, 62, 63,
60     64, 97, 98, 99, 100, 101, 102, 103,
61     104, 105, 106, 107, 108, 109, 110, 111,
62     112, 113, 114, 115, 116, 117, 118, 119,
63     120, 121, 122, 91, 92, 93, 94, 95,
64     96, 97, 98, 99, 100, 101, 102, 103,
65     104, 105, 106, 107, 108, 109, 110, 111,
66     112, 113, 114, 115, 116, 117, 118, 119,
67     120, 121, 122, 123, 124, 125, 126, 127,
68     128, 129, 130, 131, 132, 133, 134, 135,
69     136, 137, 138, 139, 140, 141, 142, 143,
70     144, 145, 146, 147, 148, 149, 150, 151,
71     152, 153, 154, 155, 156, 157, 158, 159,
72     160, 161, 162, 163, 164, 165, 166, 167,
73     168, 169, 170, 171, 172, 173, 174, 175,
74     176, 177, 178, 179, 180, 181, 182, 183,
75     184, 185, 186, 187, 188, 189, 190, 191,
76     192, 193, 194, 195, 196, 197, 198, 199,
77     200, 201, 202, 203, 204, 205, 206, 207,
78     208, 209, 210, 211, 212, 213, 214, 215,
79     216, 217, 218, 219, 220, 221, 222, 223,
80     224, 225, 226, 227, 228, 229, 230, 231,
81     232, 233, 234, 235, 236, 237, 238, 239,
82     240, 241, 242, 243, 244, 245, 246, 247,
83     248, 249, 250, 251, 252, 253, 254, 255,
84 };
85
86 const unsigned char regexmap[][256] = {
87     {
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         1, 1, 1, 1, 1, 1, 1, 1,
95         1, 1, 0, 59, 60, 61, 62, 63,
96         64, 97, 98, 99, 100, 101, 102, 103,
97         104, 105, 106, 107, 108, 109, 110, 111,
98         112, 113, 114, 115, 116, 117, 118, 119,
99         120, 121, 122, 91, 92, 93, 94, 95,
100         96, 97, 98, 99, 100, 101, 102, 103,
101         104, 105, 106, 107, 108, 109, 110, 111,
102         112, 113, 114, 115, 116, 117, 118, 119,
103         120, 121, 122, 123, 124, 125, 126, 127,
104         128, 129, 130, 131, 132, 133, 134, 135,
105         136, 137, 138, 139, 140, 141, 142, 143,
106         144, 145, 146, 147, 148, 149, 150, 151,
107         152, 153, 154, 155, 156, 157, 158, 159,
108         160, 161, 162, 163, 164, 165, 166, 167,
109         168, 169, 170, 171, 172, 173, 174, 175,
110         176, 177, 178, 179, 180, 181, 182, 183,
111         184, 185, 186, 187, 188, 189, 190, 191,
112         192, 193, 194, 195, 196, 197, 198, 199,
113         200, 201, 202, 203, 204, 205, 206, 207,
114         208, 209, 210, 211, 212, 213, 214, 215,
115         216, 217, 218, 219, 220, 221, 222, 223,
116         224, 225, 226, 227, 228, 229, 230, 231,
117         232, 233, 234, 235, 236, 237, 238, 239,
118         240, 241, 242, 243, 244, 245, 246, 247,
119         248, 249, 250, 251, 252, 253, 254, 255,
120     },
121     {
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         1, 1, 1, 1, 1, 1, 1, 1,
129         1, 1, 0, 59, 60, 61, 62, 63,
130         64, 97, 98, 99, 100, 101, 102, 103,
131         104, 105, 106, 107, 108, 109, 110, 111,
132         112, 113, 114, 115, 116, 117, 118, 119,
133         120, 121, 122, 91, 92, 93, 94, 95,
134         96, 97, 98, 99, 100, 101, 102, 103,
135         104, 105, 106, 107, 108, 109, 110, 111,
136         112, 113, 114, 115, 116, 117, 118, 119,
137         120, 121, 122, 123, 124, 125, 126, 127,
138         128, 129, 130, 131, 132, 133, 134, 135,
139         136, 137, 138, 139, 140, 141, 142, 143,
140         144, 145, 146, 147, 148, 149, 150, 151,
141         152, 153, 154, 155, 156, 157, 158, 159,
142         160, 161, 162, 163, 164, 165, 166, 167,
143         168, 169, 170, 171, 172, 173, 174, 175,
144         176, 177, 178, 179, 180, 181, 182, 183,
145         184, 185, 186, 187, 188, 189, 190, 191,
146         192, 193, 194, 195, 196, 197, 198, 199,
147         200, 201, 202, 203, 204, 205, 206, 207,
148         208, 209, 210, 211, 212, 213, 214, 215,
149         216, 217, 218, 219, 220, 221, 222, 223,
150         224, 225, 226, 227, 228, 229, 230, 231,
151         232, 233, 234, 235, 236, 237, 238, 239,
152         240, 241, 242, 243, 244, 245, 246, 247,
153         248, 249, 250, 251, 252, 253, 254, 255,
154     },
155     {
156         0, 0, 2, 3, 4, 5, 6, 7,
157         8, 9, 10, 11, 12, 13, 14, 15,
158         16, 17, 18, 19, 20, 21, 22, 23,
159         24, 25, 26, 27, 28, 29, 30, 31,
160         32, 33, 34, 35, 36, 37, 38, 39,
161         40, 41, 42, 43, 44, 1, 46, 47,
162         1, 1, 1, 1, 1, 1, 1, 1,
163         1, 1, 58, 59, 60, 61, 62, 63,
164         1, 1, 1, 1, 1, 1, 1, 1,
165         1, 1, 1, 1, 1, 1, 1, 1,
166         1, 1, 1, 1, 1, 1, 1, 1,
167         1, 1, 1, 91, 92, 93, 94, 1,
168         96, 1, 1, 1, 1, 1, 1, 1,
169         1, 1, 1, 1, 1, 1, 1, 1,
170         1, 1, 1, 1, 1, 1, 1, 1,
171         1, 1, 1, 123, 124, 125, 126, 127,
172         128, 129, 130, 131, 132, 133, 134, 135,
173         136, 137, 138, 139, 140, 141, 142, 143,
174         144, 145, 146, 147, 148, 149, 150, 151,
175         152, 153, 154, 155, 156, 157, 158, 159,
176         160, 161, 162, 163, 164, 165, 166, 167,
177         168, 169, 170, 171, 172, 173, 174, 175,
178         176, 177, 178, 179, 180, 181, 182, 183,
179         184, 185, 186, 187, 188, 189, 190, 191,
180         192, 193, 194, 195, 196, 197, 198, 199,
181         200, 201, 202, 203, 204, 205, 206, 207,
182         208, 209, 210, 211, 212, 213, 214, 215,
183         216, 217, 218, 219, 220, 221, 222, 223,
184         224, 225, 226, 227, 228, 229, 230, 231,
185         232, 233, 234, 235, 236, 237, 238, 239,
186         240, 241, 242, 243, 244, 245, 246, 247,
187         240, 241, 242, 243, 244, 245, 246, 247,
188     },
189     {
190         0, 0, 2, 3, 4, 5, 6, 7,
191         8, 9, 10, 11, 12, 13, 14, 15,
192         16, 17, 18, 19, 20, 21, 22, 23,
193         24, 25, 26, 27, 28, 29, 30, 31,
194         1, 33, 34, 35, 36, 37, 38, 39,
195         40, 41, 42, 43, 44, 45, 46, 47,
196         48, 49, 50, 51, 52, 53, 54, 55,
197         56, 57, 58, 59, 60, 61, 62, 63,
198         64, 97, 98, 99, 100, 101, 102, 103,
199         104, 105, 106, 107, 108, 109, 110, 111,
200         112, 113, 114, 115, 116, 117, 118, 119,
201         120, 121, 122, 91, 92, 93, 94, 95,
202         96, 97, 98, 99, 100, 101, 102, 103,
203         104, 105, 106, 107, 108, 109, 110, 111,
204         112, 113, 114, 115, 116, 117, 118, 119,
205         120, 121, 122, 123, 124, 125, 126, 127,
206         128, 129, 130, 131, 132, 133, 134, 135,
207         136, 137, 138, 139, 140, 141, 142, 143,
208         144, 145, 146, 147, 148, 149, 150, 151,
209         152, 153, 154, 155, 156, 157, 158, 159,
210         160, 161, 162, 163, 164, 165, 166, 167,
211         168, 169, 170, 171, 172, 173, 174, 175,
212         176, 177, 178, 179, 180, 181, 182, 183,
213         184, 185, 186, 187, 188, 189, 190, 191,
214         192, 193, 194, 195, 196, 197, 198, 199,
215         200, 201, 202, 203, 204, 205, 206, 207,
216         208, 209, 210, 211, 212, 213, 214, 215,
217         216, 217, 218, 219, 220, 221, 222, 223,
218         224, 225, 226, 227, 228, 229, 230, 231,
219         232, 233, 234, 235, 236, 237, 238, 239,
220         240, 241, 242, 243, 244, 245, 246, 247,
221         248, 249, 250, 251, 252, 253, 254, 255,
222     },
223     {
224         0, 0, 2, 3, 4, 5, 6, 7,
225         8, 9, 10, 11, 12, 13, 14, 15,
226         16, 17, 18, 19, 20, 21, 22, 23,
227         24, 25, 26, 27, 28, 29, 30, 31,
228         32, 1, 1, 1, 1, 1, 1, 1,
229         1, 1, 1, 1, 1, 1, 1, 47,
230         48, 49, 50, 51, 52, 53, 54, 55,
231         56, 57, 1, 1, 1, 1, 1, 1,
232         64, 97, 98, 99, 100, 101, 102, 103,
233         104, 105, 106, 107, 108, 109, 110, 111,
234         112, 113, 114, 115, 116, 117, 118, 119,
235         120, 121, 122, 1, 0, 1, 94, 95,
236         96, 97, 98, 99, 100, 101, 102, 103,
237         104, 105, 106, 107, 108, 109, 110, 111,
238         112, 113, 114, 115, 116, 117, 118, 119,
239         120, 121, 122, 1, 1, 1, 126, 127,
240         128, 129, 130, 131, 132, 133, 134, 135,
241         136, 137, 138, 139, 140, 141, 142, 143,
242         144, 145, 146, 147, 148, 149, 150, 151,
243         152, 153, 154, 155, 156, 157, 158, 159,
244         160, 161, 162, 163, 164, 165, 166, 167,
245         168, 169, 170, 171, 172, 173, 174, 175,
246         176, 177, 178, 179, 180, 181, 182, 183,
247         184, 185, 186, 187, 188, 189, 190, 191,
248         192, 193, 194, 195, 196, 197, 198, 199,
249         200, 201, 202, 203, 204, 205, 206, 207,
250         208, 209, 210, 211, 212, 213, 214, 215,
251         216, 217, 218, 219, 220, 221, 222, 223,
252         224, 225, 226, 227, 228, 229, 230, 231,
253         232, 233, 234, 235, 236, 237, 238, 239,
254         240, 241, 242, 243, 244, 245, 246, 247,
255         248, 249, 250, 251, 252, 253, 254, 255,
256     },
257     {
258         0, 0, 0, 0, 0, 0, 0, 0,
259         0, 0, 0, 0, 0, 0, 0, 0,
260         0, 0, 0, 0, 0, 0, 0, 0,
261         0, 0, 0, 0, 0, 0, 0, 0,
262         0, 0, 0, 0, 0, 0, 0, 0,
263         1, 0, 0, 0, 0, 0, 0, 0,
264         0, 0, 0, 0, 0, 0, 0, 0,
265         0, 0, 0, 0, 0, 0, 0, 0,
266         0, 0, 0, 0, 0, 0, 0, 0,
267         0, 0, 0, 0, 0, 0, 0, 0,
268         0, 0, 0, 0, 0, 0, 0, 0,
269         0, 0, 0, 0, 0, 0, 0, 0,
270         0, 0, 0, 0, 0, 0, 0, 0,
271         0, 0, 0, 0, 0, 0, 0, 0,
272         0, 0, 0, 0, 0, 0, 0, 0,
273         0, 0, 0, 0, 0, 0, 0, 0,
274         0, 0, 0, 0, 0, 0, 0, 0,
275         0, 0, 0, 0, 0, 0, 0, 0,
276         0, 0, 0, 0, 0, 0, 0, 0,
277         0, 0, 0, 0, 0, 0, 0, 0,
278         0, 0, 0, 0, 0, 0, 0, 0,
279         0, 0, 0, 0, 0, 0, 0, 0,
280         0, 0, 0, 0, 0, 0, 0, 0,
281         0, 0, 0, 0, 0, 0, 0, 0,
282         0, 0, 0, 0, 0, 0, 0, 0,
283         0, 0, 0, 0, 0, 0, 0, 0,
284         0, 0, 0, 0, 0, 0, 0, 0,
285         0, 0, 0, 0, 0, 0, 0, 0,
286         0, 0, 0, 0, 0, 0, 0, 0,
287         0, 0, 0, 0, 0, 0, 0, 0,
288         0, 0, 0, 0, 0, 0, 0, 0,
289         0, 0, 0, 0, 0, 0, 0, 0,
290     },
291     {
292         0, 0, 0, 0, 0, 0, 0, 0,
293         0, 0, 0, 0, 0, 0, 0, 0,
294         0, 0, 0, 0, 0, 0, 0, 0,
295         0, 0, 0, 0, 0, 0, 0, 0,
296         0, 0, 0, 0, 0, 0, 0, 0,
297         0, 1, 0, 0, 0, 0, 0, 0,
298         0, 0, 0, 0, 0, 0, 0, 0,
299         0, 0, 0, 0, 0, 0, 0, 0,
300         0, 0, 0, 0, 0, 0, 0, 0,
301         0, 0, 0, 0, 0, 0, 0, 0,
302         0, 0, 0, 0, 0, 0, 0, 0,
303         0, 0, 0, 0, 0, 0, 0, 0,
304         0, 0, 0, 0, 0, 0, 0, 0,
305         0, 0, 0, 0, 0, 0, 0, 0,
306         0, 0, 0, 0, 0, 0, 0, 0,
307         0, 0, 0, 0, 0, 0, 0, 0,
308         0, 0, 0, 0, 0, 0, 0, 0,
309         0, 0, 0, 0, 0, 0, 0, 0,
310         0, 0, 0, 0, 0, 0, 0, 0,
311         0, 0, 0, 0, 0, 0, 0, 0,
312         0, 0, 0, 0, 0, 0, 0, 0,
313         0, 0, 0, 0, 0, 0, 0, 0,
314         0, 0, 0, 0, 0, 0, 0, 0,
315         0, 0, 0, 0, 0, 0, 0, 0,
316         0, 0, 0, 0, 0, 0, 0, 0,
317         0, 0, 0, 0, 0, 0, 0, 0,
318         0, 0, 0, 0, 0, 0, 0, 0,
319         0, 0, 0, 0, 0, 0, 0, 0,
320         0, 0, 0, 0, 0, 0, 0, 0,
321         0, 0, 0, 0, 0, 0, 0, 0,
322         0, 0, 0, 0, 0, 0, 0, 0,
323         0, 0, 0, 0, 0, 0, 0, 0,
324     },
325     {
326         0, 0, 0, 0, 0, 0, 0, 0,
327         0, 0, 0, 0, 0, 0, 0, 0,
328         0, 0, 0, 0, 0, 0, 0, 0,
329         0, 0, 0, 0, 0, 0, 0, 0,
330         0, 0, 0, 0, 0, 0, 0, 0,
331         0, 0, 0, 0, 0, 0, 0, 0,
332         0, 0, 0, 0, 0, 0, 0, 0,
333         0, 0, 0, 0, 0, 0, 0, 0,
334         0, 0, 0, 0, 0, 0, 0, 0,
335         0, 0, 0, 0, 0, 0, 0, 0,
336         0, 0, 0, 0, 0, 0, 0, 0,
337         0, 0, 0, 0, 1, 0, 0, 0,
338         0, 0, 0, 0, 0, 0, 0, 0,
339         0, 0, 0, 0, 0, 0, 0, 0,
340         0, 0, 0, 0, 0, 0, 0, 0,
341         0, 0, 0, 0, 0, 0, 0, 0,
342         0, 0, 0, 0, 0, 0, 0, 0,
343         0, 0, 0, 0, 0, 0, 0, 0,
344         0, 0, 0, 0, 0, 0, 0, 0,
345         0, 0, 0, 0, 0, 0, 0, 0,
346         0, 0, 0, 0, 0, 0, 0, 0,
347         0, 0, 0, 0, 0, 0, 0, 0,
348         0, 0, 0, 0, 0, 0, 0, 0,
349         0, 0, 0, 0, 0, 0, 0, 0,
350         0, 0, 0, 0, 0, 0, 0, 0,
351         0, 0, 0, 0, 0, 0, 0, 0,
352         0, 0, 0, 0, 0, 0, 0, 0,
353         0, 0, 0, 0, 0, 0, 0, 0,
354         0, 0, 0, 0, 0, 0, 0, 0,
355         0, 0, 0, 0, 0, 0, 0, 0,
356         0, 0, 0, 0, 0, 0, 0, 0,
357         0, 0, 0, 0, 0, 0, 0, 0,
358     },
359     {
360         1, 1, 1, 1, 1, 1, 1, 1,
361         1, 1, 1, 1, 1, 1, 1, 1,
362         1, 1, 1, 1, 1, 1, 1, 1,
363         1, 1, 1, 1, 1, 1, 1, 1,
364         1, 1, 1, 1, 1, 1, 1, 1,
365         1, 1, 1, 1, 1, 1, 1, 1,
366         0, 0, 0, 0, 0, 0, 0, 0,
367         0, 0, 1, 1, 1, 1, 1, 1,
368         1, 1, 1, 1, 1, 1, 1, 1,
369         1, 1, 1, 1, 1, 1, 1, 1,
370         1, 1, 1, 1, 1, 1, 1, 1,
371         1, 1, 1, 1, 1, 1, 1, 1,
372         1, 1, 1, 1, 1, 1, 1, 1,
373         1, 1, 1, 1, 1, 1, 1, 1,
374         1, 1, 1, 1, 1, 1, 1, 1,
375         1, 1, 1, 1, 1, 1, 1, 1,
376         1, 1, 1, 1, 1, 1, 1, 1,
377         1, 1, 1, 1, 1, 1, 1, 1,
378         1, 1, 1, 1, 1, 1, 1, 1,
379         1, 1, 1, 1, 1, 1, 1, 1,
380         1, 1, 1, 1, 1, 1, 1, 1,
381         1, 1, 1, 1, 1, 1, 1, 1,
382         1, 1, 1, 1, 1, 1, 1, 1,
383         1, 1, 1, 1, 1, 1, 1, 1,
384         1, 1, 1, 1, 1, 1, 1, 1,
385         1, 1, 1, 1, 1, 1, 1, 1,
386         1, 1, 1, 1, 1, 1, 1, 1,
387         1, 1, 1, 1, 1, 1, 1, 1,
388         1, 1, 1, 1, 1, 1, 1, 1,
389         1, 1, 1, 1, 1, 1, 1, 1,
390         1, 1, 1, 1, 1, 1, 1, 1,
391         1, 1, 1, 1, 1, 1, 1, 1,
392     },
393     {
394         1, 1, 1, 1, 1, 1, 1, 1,
395         1, 1, 1, 1, 1, 1, 1, 1,
396         1, 1, 1, 1, 1, 1, 1, 1,
397         1, 1, 1, 1, 1, 1, 1, 1,
398         1, 1, 1, 1, 1, 1, 1, 1,
399         1, 1, 1, 1, 1, 0, 1, 1,
400         0, 0, 0, 0, 0, 0, 0, 0,
401         0, 0, 1, 1, 1, 1, 1, 1,
402         0, 0, 0, 0, 0, 0, 0, 0,
403         0, 0, 0, 0, 0, 0, 0, 0,
404         0, 0, 0, 0, 0, 0, 0, 0,
405         0, 0, 0, 1, 1, 1, 1, 0,
406         1, 0, 0, 0, 0, 0, 0, 0,
407         0, 0, 0, 0, 0, 0, 0, 0,
408         0, 0, 0, 0, 0, 0, 0, 0,
409         0, 0, 0, 1, 1, 1, 1, 1,
410         1, 1, 1, 1, 1, 1, 1, 1,
411         1, 1, 1, 1, 1, 1, 1, 1,
412         1, 1, 1, 1, 1, 1, 1, 1,
413         1, 1, 1, 1, 1, 1, 1, 1,
414         1, 1, 1, 1, 1, 1, 1, 1,
415         1, 1, 1, 1, 1, 1, 1, 1,
416         1, 1, 1, 1, 1, 1, 1, 1,
417         1, 1, 1, 1, 1, 1, 1, 1,
418         1, 1, 1, 1, 1, 1, 1, 1,
419         1, 1, 1, 1, 1, 1, 1, 1,
420         1, 1, 1, 1, 1, 1, 1, 1,
421         1, 1, 1, 1, 1, 1, 1, 1,
422         1, 1, 1, 1, 1, 1, 1, 1,
423         1, 1, 1, 1, 1, 1, 1, 1,
424         1, 1, 1, 1, 1, 1, 1, 1,
425         1, 1, 1, 1, 1, 1, 1, 1,
426     },
427     {
428         1, 1, 1, 1, 1, 1, 1, 1,
429         1, 1, 1, 1, 1, 1, 1, 1,
430         1, 1, 1, 1, 1, 1, 1, 1,
431         1, 1, 1, 1, 1, 1, 1, 1,
432         0, 1, 1, 1, 1, 1, 1, 1,
433         1, 1, 1, 1, 1, 1, 1, 1,
434         1, 1, 1, 1, 1, 1, 1, 1,
435         1, 1, 1, 1, 1, 1, 1, 1,
436         1, 1, 1, 1, 1, 1, 1, 1,
437         1, 1, 1, 1, 1, 1, 1, 1,
438         1, 1, 1, 1, 1, 1, 1, 1,
439         1, 1, 1, 1, 1, 1, 1, 1,
440         1, 1, 1, 1, 1, 1, 1, 1,
441         1, 1, 1, 1, 1, 1, 1, 1,
442         1, 1, 1, 1, 1, 1, 1, 1,
443         1, 1, 1, 1, 1, 1, 1, 1,
444         1, 1, 1, 1, 1, 1, 1, 1,
445         1, 1, 1, 1, 1, 1, 1, 1,
446         1, 1, 1, 1, 1, 1, 1, 1,
447         1, 1, 1, 1, 1, 1, 1, 1,
448         1, 1, 1, 1, 1, 1, 1, 1,
449         1, 1, 1, 1, 1, 1, 1, 1,
450         1, 1, 1, 1, 1, 1, 1, 1,
451         1, 1, 1, 1, 1, 1, 1, 1,
452         1, 1, 1, 1, 1, 1, 1, 1,
453         1, 1, 1, 1, 1, 1, 1, 1,
454         1, 1, 1, 1, 1, 1, 1, 1,
455         1, 1, 1, 1, 1, 1, 1, 1,
456         1, 1, 1, 1, 1, 1, 1, 1,
457         1, 1, 1, 1, 1, 1, 1, 1,
458         1, 1, 1, 1, 1, 1, 1, 1,
459         1, 1, 1, 1, 1, 1, 1, 1,
460     },
461     {
462         1, 1, 1, 1, 1, 1, 1, 1,
463         1, 1, 1, 1, 1, 1, 1, 1,
464         1, 1, 1, 1, 1, 1, 1, 1,
465         1, 1, 1, 1, 1, 1, 1, 1,
466         1, 1, 1, 1, 1, 1, 1, 1,
467         1, 1, 1, 1, 1, 1, 1, 1,
468         1, 1, 1, 1, 1, 1, 1, 1,
469         1, 1, 1, 1, 1, 1, 1, 1,
470         1, 1, 1, 1, 1, 1, 1, 1,
471         1, 1, 1, 1, 1, 1, 1, 1,
472         1, 1, 1, 1, 1, 1, 1, 1,
473         1, 1, 1, 1, 1, 1, 1, 1,
474         1, 1, 1, 1, 1, 1, 1, 1,
475         1, 1, 1, 1, 1, 1, 1, 1,
476         1, 1, 1, 1, 1, 1, 1, 1,
477         1, 1, 1, 1, 1, 1, 1, 1,
478         1, 1, 1, 1, 1, 1, 1, 1,
479         1, 1, 1, 1, 1, 1, 1, 1,
480         1, 1, 1, 1, 1, 1, 1, 1,
481         1, 1, 1, 1, 1, 1, 1, 1,
482         1, 1, 1, 1, 1, 1, 1, 1,
483         1, 1, 1, 1, 1, 1, 1, 1,
484         1, 1, 1, 1, 1, 1, 1, 1,
485         1, 1, 1, 1, 1, 1, 1, 1,
486         1, 1, 1, 1, 1, 1, 1, 1,
487         1, 1, 1, 1, 1, 1, 1, 1,
488         1, 1, 1, 1, 1, 1, 1, 1,
489         1, 1, 1, 1, 1, 1, 1, 1,
490         1, 1, 1, 1, 1, 1, 1, 1,
491         1, 1, 1, 1, 1, 1, 1, 1,
492         1, 1, 1, 1, 1, 1, 1, 1,
493         1, 1, 1, 1, 1, 1, 1, 1,
494     },
495     {
496         0, 0, 2, 3, 4, 5, 6, 7,
497         8, 1, 10, 11, 12, 13, 14, 15,
498         16, 17, 18, 19, 20, 21, 22, 23,
499         24, 25, 26, 27, 28, 29, 30, 31,
500         32, 33, 34, 35, 36, 37, 38, 39,
501         40, 41, 42, 43, 44, 45, 46, 47,
502         48, 49, 50, 51, 52, 53, 54, 55,
503         56, 57, 58, 59, 60, 61, 62, 63,
504         64, 97, 98, 99, 100, 101, 102, 103,
505         104, 105, 106, 107, 108, 109, 110, 111,
506         112, 113, 114, 115, 116, 117, 118, 119,
507         120, 121, 122, 91, 92, 93, 94, 95,
508         96, 97, 98, 99, 100, 101, 102, 103,
509         104, 105, 106, 107, 108, 109, 110, 111,
510         112, 113, 114, 115, 116, 117, 118, 119,
511         120, 121, 122, 123, 124, 125, 126, 127,
512         128, 129, 130, 131, 132, 133, 134, 135,
513         136, 137, 138, 139, 140, 141, 142, 143,
514         144, 145, 146, 147, 148, 149, 150, 151,
515         152, 153, 154, 155, 156, 157, 158, 159,
516         160, 161, 162, 163, 164, 165, 166, 167,
517         168, 169, 170, 171, 172, 173, 174, 175,
518         176, 177, 178, 179, 180, 181, 182, 183,
519         184, 185, 186, 187, 188, 189, 190, 191,
520         192, 193, 194, 195, 196, 197, 198, 199,
521         200, 201, 202, 203, 204, 205, 206, 207,
522         208, 209, 210, 211, 212, 213, 214, 215,
523         216, 217, 218, 219, 220, 221, 222, 223,
524         224, 225, 226, 227, 228, 229, 230, 231,
525         232, 233, 234, 235, 236, 237, 238, 239,
526         240, 241, 242, 243, 244, 245, 246, 247,
527         248, 249, 250, 251, 252, 253, 254, 255,
528     },
529     {
530         0, 0, 2, 3, 4, 5, 6, 7,
531         8, 10, 10, 11, 12, 13, 14, 15,
532         16, 17, 18, 19, 20, 21, 22, 23,
533         24, 25, 26, 27, 28, 29, 30, 31,
534         32, 33, 34, 35, 1, 37, 38, 39,
535         40, 41, 42, 43, 44, 45, 46, 47,
536         48, 49, 50, 51, 52, 53, 54, 55,
537         56, 57, 58, 59, 60, 61, 62, 63,
538         64, 97, 98, 99, 100, 101, 102, 103,
539         104, 105, 106, 107, 108, 109, 110, 111,
540         112, 113, 114, 115, 116, 117, 118, 119,
541         120, 121, 122, 91, 92, 93, 94, 95,
542         96, 97, 98, 99, 100, 101, 102, 103,
543         104, 105, 106, 107, 108, 109, 110, 111,
544         112, 113, 114, 115, 116, 117, 118, 119,
545         120, 121, 122, 123, 124, 125, 126, 127,
546         128, 129, 130, 131, 132, 133, 134, 135,
547         136, 137, 138, 139, 140, 141, 142, 143,
548         144, 145, 146, 147, 148, 149, 150, 151,
549         152, 153, 154, 155, 156, 157, 158, 159,
550         160, 161, 162, 163, 164, 165, 166, 167,
551         168, 169, 170, 171, 172, 173, 174, 175,
552         176, 177, 178, 179, 180, 181, 182, 183,
553         184, 185, 186, 187, 188, 189, 190, 191,
554         192, 193, 194, 195, 196, 197, 198, 199,
555         200, 201, 202, 203, 204, 205, 206, 207,
556         208, 209, 210, 211, 212, 213, 214, 215,
557         216, 217, 218, 219, 220, 221, 222, 223,
558         224, 225, 226, 227, 228, 229, 230, 231,
559         232, 233, 234, 235, 236, 237, 238, 239,
560         240, 241, 242, 243, 244, 245, 246, 247,
561         248, 249, 250, 251, 252, 253, 254, 255,
562     },
563     {
564         0, 0, 2, 3, 4, 5, 6, 7,
565         8, 10, 10, 11, 12, 13, 14, 15,
566         16, 17, 18, 19, 20, 21, 22, 23,
567         24, 25, 26, 27, 28, 29, 30, 31,
568         32, 33, 34, 35, 36, 37, 38, 39,
569         40, 41, 42, 43, 44, 45, 46, 47,
570         48, 49, 50, 51, 52, 53, 54, 55,
571         56, 57, 58, 59, 60, 61, 62, 63,
572         64, 97, 98, 99, 100, 101, 102, 103,
573         104, 105, 106, 107, 108, 109, 110, 111,
574         112, 113, 114, 115, 116, 117, 118, 119,
575         120, 121, 122, 91, 92, 93, 94, 95,
576         96, 97, 98, 99, 100, 101, 102, 103,
577         104, 105, 106, 107, 108, 109, 110, 111,
578         112, 113, 114, 115, 116, 117, 118, 119,
579         120, 121, 122, 123, 1, 125, 126, 127,
580         128, 129, 130, 131, 132, 133, 134, 135,
581         136, 137, 138, 139, 140, 141, 142, 143,
582         144, 145, 146, 147, 148, 149, 150, 151,
583         152, 153, 154, 155, 156, 157, 158, 159,
584         160, 161, 162, 163, 164, 165, 166, 167,
585         168, 169, 170, 171, 172, 173, 174, 175,
586         176, 177, 178, 179, 180, 181, 182, 183,
587         184, 185, 186, 187, 188, 189, 190, 191,
588         192, 193, 194, 195, 196, 197, 198, 199,
589         200, 201, 202, 203, 204, 205, 206, 207,
590         208, 209, 210, 211, 212, 213, 214, 215,
591         216, 217, 218, 219, 220, 221, 222, 223,
592         224, 225, 226, 227, 228, 229, 230, 231,
593         232, 233, 234, 235, 236, 237, 238, 239,
594         240, 241, 242, 243, 244, 245, 246, 247,
595         248, 249, 250, 251, 252, 253, 254, 255,
596     },
597
598
599     {
600         0, 0, 2, 3, 4, 5, 6, 7,
601         8, 10, 10, 11, 12, 13, 14, 15,
602         16, 17, 18, 19, 20, 21, 22, 23,
603         24, 25, 26, 27, 28, 29, 30, 31,
604         32, 33, 34, 35, 36, 37, 38, 39,
605         40, 41, 42, 43, 44, 45, 46, 47,
606         48, 49, 50, 51, 52, 53, 54, 55,
607         56, 57, 58, 59, 1, 61, 62, 63,
608         64, 97, 98, 99, 100, 101, 102, 103,
609         104, 105, 106, 107, 108, 109, 110, 111,
610         112, 113, 114, 115, 116, 117, 118, 119,
611         120, 121, 122, 91, 92, 93, 94, 95,
612         96, 97, 98, 99, 100, 101, 102, 103,
613         104, 105, 106, 107, 108, 109, 110, 111,
614         112, 113, 114, 115, 116, 117, 118, 119,
615         120, 121, 122, 123, 124, 125, 126, 127,
616         128, 129, 130, 131, 132, 133, 134, 135,
617         136, 137, 138, 139, 140, 141, 142, 143,
618         144, 145, 146, 147, 148, 149, 150, 151,
619         152, 153, 154, 155, 156, 157, 158, 159,
620         160, 161, 162, 163, 164, 165, 166, 167,
621         168, 169, 170, 171, 172, 173, 174, 175,
622         176, 177, 178, 179, 180, 181, 182, 183,
623         184, 185, 186, 187, 188, 189, 190, 191,
624         192, 193, 194, 195, 196, 197, 198, 199,
625         200, 201, 202, 203, 204, 205, 206, 207,
626         208, 209, 210, 211, 212, 213, 214, 215,
627         216, 217, 218, 219, 220, 221, 222, 223,
628         224, 225, 226, 227, 228, 229, 230, 231,
629         232, 233, 234, 235, 236, 237, 238, 239,
630         240, 241, 242, 243, 244, 245, 246, 247,
631         248, 249, 250, 251, 252, 253, 254, 255,
632     },
633 };
634