xref: /openbmc/linux/drivers/media/usb/gspca/topro.c (revision 82e6fdd6)
1 /*
2  * Topro TP6800/6810 webcam driver.
3  *
4  * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr)
5  * Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se)
6  * Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com)
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; If not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
23 
24 #include "gspca.h"
25 
26 MODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver");
27 MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, Anders Blomdell <anders.blomdell@control.lth.se>");
28 MODULE_LICENSE("GPL");
29 
30 static int force_sensor = -1;
31 
32 /* JPEG header */
33 static const u8 jpeg_head[] = {
34 	0xff, 0xd8,			/* jpeg */
35 
36 /* quantization table quality 50% */
37 	0xff, 0xdb, 0x00, 0x84,		/* DQT */
38 0,
39 #define JPEG_QT0_OFFSET 7
40 	0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
41 	0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
42 	0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
43 	0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
44 	0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
45 	0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
46 	0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
47 	0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
48 1,
49 #define JPEG_QT1_OFFSET 72
50 	0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
51 	0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
52 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
53 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
54 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
55 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
56 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
57 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
58 
59 	/* Define Huffman table (thanks to Thomas Kaiser) */
60 	0xff, 0xc4, 0x01, 0x5e,
61 	0x00, 0x00, 0x02, 0x03,
62 	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
63 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
64 	0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
65 	0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
66 	0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57,
67 	0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21,
68 	0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32,
69 	0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52,
70 	0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1,
71 	0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2,
72 	0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25,
73 	0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44,
74 	0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57,
75 	0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73,
76 	0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85,
77 	0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97,
78 	0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2,
79 	0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3,
80 	0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4,
81 	0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5,
82 	0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
83 	0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
84 	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
85 	0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,
86 	0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02,
87 	0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
88 	0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01,
89 	0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13,
90 	0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14,
91 	0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1,
92 	0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43,
93 	0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82,
94 	0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28,
95 	0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47,
96 	0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64,
97 	0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76,
98 	0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
99 	0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3,
100 	0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4,
101 	0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5,
102 	0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
103 	0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
104 	0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
105 	0xff, 0xc0, 0x00, 0x11,		/* SOF0 (start of frame 0 */
106 	0x08,				/* data precision */
107 #define JPEG_HEIGHT_OFFSET 493
108 	0x01, 0xe0,			/* height */
109 	0x02, 0x80,			/* width */
110 	0x03,				/* component number */
111 		0x01,
112 			0x21,		/* samples Y = jpeg 422 */
113 			0x00,		/* quant Y */
114 		0x02, 0x11, 0x01,	/* samples CbCr - quant CbCr */
115 		0x03, 0x11, 0x01,
116 
117 	0xff, 0xda, 0x00, 0x0c,		/* SOS (start of scan) */
118 	0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
119 #define JPEG_HDR_SZ 521
120 };
121 
122 struct sd {
123 	struct gspca_dev gspca_dev;	/* !! must be the first item */
124 	struct v4l2_ctrl *jpegqual;
125 	struct v4l2_ctrl *sharpness;
126 	struct v4l2_ctrl *gamma;
127 	struct v4l2_ctrl *blue;
128 	struct v4l2_ctrl *red;
129 
130 	u8 framerate;
131 	u8 quality;		/* webcam current JPEG quality (0..16) */
132 	s8 ag_cnt;		/* autogain / start counter for tp6810 */
133 #define AG_CNT_START 13		/* check gain every N frames */
134 
135 	u8 bridge;
136 	u8 sensor;
137 
138 	u8 jpeg_hdr[JPEG_HDR_SZ];
139 };
140 
141 enum bridges {
142 	BRIDGE_TP6800,
143 	BRIDGE_TP6810,
144 };
145 
146 enum sensors {
147 	SENSOR_CX0342,
148 	SENSOR_SOI763A,		/* ~= ov7630 / ov7648 */
149 	NSENSORS
150 };
151 
152 static const struct v4l2_pix_format vga_mode[] = {
153 	{320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
154 		.bytesperline = 320,
155 		.sizeimage = 320 * 240 * 4 / 8 + 590,
156 		.colorspace = V4L2_COLORSPACE_JPEG},
157 	{640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
158 		.bytesperline = 640,
159 		.sizeimage = 640 * 480 * 3 / 8 + 590,
160 		.colorspace = V4L2_COLORSPACE_JPEG}
161 };
162 
163 /*
164  * JPEG quality
165  * index: webcam compression
166  * value: JPEG quality in %
167  */
168 static const u8 jpeg_q[17] = {
169 	88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94
170 };
171 
172 #define BULK_OUT_SIZE		0x20
173 #if BULK_OUT_SIZE > USB_BUF_SZ
174 #error "USB buffer too small"
175 #endif
176 
177 #define DEFAULT_FRAME_RATE 30
178 
179 static const u8 rates[] = {30, 20, 15, 10, 7, 5};
180 static const struct framerates framerates[] = {
181 	{
182 		.rates = rates,
183 		.nrates = ARRAY_SIZE(rates)
184 	},
185 	{
186 		.rates = rates,
187 		.nrates = ARRAY_SIZE(rates)
188 	}
189 };
190 static const u8 rates_6810[] = {30, 15, 10, 7, 5};
191 static const struct framerates framerates_6810[] = {
192 	{
193 		.rates = rates_6810,
194 		.nrates = ARRAY_SIZE(rates_6810)
195 	},
196 	{
197 		.rates = rates_6810,
198 		.nrates = ARRAY_SIZE(rates_6810)
199 	}
200 };
201 
202 /*
203  * webcam quality in %
204  * the last value is the ultra fine quality
205  */
206 
207 /* TP6800 register offsets */
208 #define TP6800_R10_SIF_TYPE		0x10
209 #define TP6800_R11_SIF_CONTROL		0x11
210 #define TP6800_R12_SIF_ADDR_S		0x12
211 #define TP6800_R13_SIF_TX_DATA		0x13
212 #define TP6800_R14_SIF_RX_DATA		0x14
213 #define TP6800_R15_GPIO_PU		0x15
214 #define TP6800_R16_GPIO_PD		0x16
215 #define TP6800_R17_GPIO_IO		0x17
216 #define TP6800_R18_GPIO_DATA		0x18
217 #define TP6800_R19_SIF_ADDR_S2		0x19
218 #define TP6800_R1A_SIF_TX_DATA2		0x1a
219 #define TP6800_R1B_SIF_RX_DATA2		0x1b
220 #define TP6800_R21_ENDP_1_CTL		0x21
221 #define TP6800_R2F_TIMING_CFG		0x2f
222 #define TP6800_R30_SENSOR_CFG		0x30
223 #define TP6800_R31_PIXEL_START		0x31
224 #define TP6800_R32_PIXEL_END_L		0x32
225 #define TP6800_R33_PIXEL_END_H		0x33
226 #define TP6800_R34_LINE_START		0x34
227 #define TP6800_R35_LINE_END_L		0x35
228 #define TP6800_R36_LINE_END_H		0x36
229 #define TP6800_R37_FRONT_DARK_ST	0x37
230 #define TP6800_R38_FRONT_DARK_END	0x38
231 #define TP6800_R39_REAR_DARK_ST_L	0x39
232 #define TP6800_R3A_REAR_DARK_ST_H	0x3a
233 #define TP6800_R3B_REAR_DARK_END_L	0x3b
234 #define TP6800_R3C_REAR_DARK_END_H	0x3c
235 #define TP6800_R3D_HORIZ_DARK_LINE_L	0x3d
236 #define TP6800_R3E_HORIZ_DARK_LINE_H	0x3e
237 #define TP6800_R3F_FRAME_RATE		0x3f
238 #define TP6800_R50			0x50
239 #define TP6800_R51			0x51
240 #define TP6800_R52			0x52
241 #define TP6800_R53			0x53
242 #define TP6800_R54_DARK_CFG		0x54
243 #define TP6800_R55_GAMMA_R		0x55
244 #define TP6800_R56_GAMMA_G		0x56
245 #define TP6800_R57_GAMMA_B		0x57
246 #define TP6800_R5C_EDGE_THRLD		0x5c
247 #define TP6800_R5D_DEMOSAIC_CFG		0x5d
248 #define TP6800_R78_FORMAT		0x78
249 #define TP6800_R79_QUALITY		0x79
250 #define TP6800_R7A_BLK_THRLD		0x7a
251 
252 /* CX0342 register offsets */
253 
254 #define CX0342_SENSOR_ID		0x00
255 #define CX0342_VERSION_NO		0x01
256 #define CX0342_ORG_X_L			0x02
257 #define CX0342_ORG_X_H			0x03
258 #define CX0342_ORG_Y_L			0x04
259 #define CX0342_ORG_Y_H			0x05
260 #define CX0342_STOP_X_L			0x06
261 #define CX0342_STOP_X_H			0x07
262 #define CX0342_STOP_Y_L			0x08
263 #define CX0342_STOP_Y_H			0x09
264 #define CX0342_FRAME_WIDTH_L		0x0a
265 #define CX0342_FRAME_WIDTH_H		0x0b
266 #define CX0342_FRAME_HEIGH_L		0x0c
267 #define CX0342_FRAME_HEIGH_H		0x0d
268 #define CX0342_EXPO_LINE_L		0x10
269 #define CX0342_EXPO_LINE_H		0x11
270 #define CX0342_EXPO_CLK_L		0x12
271 #define CX0342_EXPO_CLK_H		0x13
272 #define CX0342_RAW_GRGAIN_L		0x14
273 #define CX0342_RAW_GRGAIN_H		0x15
274 #define CX0342_RAW_GBGAIN_L		0x16
275 #define CX0342_RAW_GBGAIN_H		0x17
276 #define CX0342_RAW_RGAIN_L		0x18
277 #define CX0342_RAW_RGAIN_H		0x19
278 #define CX0342_RAW_BGAIN_L		0x1a
279 #define CX0342_RAW_BGAIN_H		0x1b
280 #define CX0342_GLOBAL_GAIN		0x1c
281 #define CX0342_SYS_CTRL_0		0x20
282 #define CX0342_SYS_CTRL_1		0x21
283 #define CX0342_SYS_CTRL_2		0x22
284 #define CX0342_BYPASS_MODE		0x23
285 #define CX0342_SYS_CTRL_3		0x24
286 #define CX0342_TIMING_EN		0x25
287 #define CX0342_OUTPUT_CTRL		0x26
288 #define CX0342_AUTO_ADC_CALIB		0x27
289 #define CX0342_SYS_CTRL_4		0x28
290 #define CX0342_ADCGN			0x30
291 #define CX0342_SLPCR			0x31
292 #define CX0342_SLPFN_LO			0x32
293 #define CX0342_ADC_CTL			0x33
294 #define CX0342_LVRST_BLBIAS		0x34
295 #define CX0342_VTHSEL			0x35
296 #define CX0342_RAMP_RIV			0x36
297 #define CX0342_LDOSEL			0x37
298 #define CX0342_CLOCK_GEN		0x40
299 #define CX0342_SOFT_RESET		0x41
300 #define CX0342_PLL			0x42
301 #define CX0342_DR_ENH_PULSE_OFFSET_L	0x43
302 #define CX0342_DR_ENH_PULSE_OFFSET_H	0x44
303 #define CX0342_DR_ENH_PULSE_POS_L	0x45
304 #define CX0342_DR_ENH_PULSE_POS_H	0x46
305 #define CX0342_DR_ENH_PULSE_WIDTH	0x47
306 #define CX0342_AS_CURRENT_CNT_L		0x48
307 #define CX0342_AS_CURRENT_CNT_H		0x49
308 #define CX0342_AS_PREVIOUS_CNT_L	0x4a
309 #define CX0342_AS_PREVIOUS_CNT_H	0x4b
310 #define CX0342_SPV_VALUE_L		0x4c
311 #define CX0342_SPV_VALUE_H		0x4d
312 #define CX0342_GPXLTHD_L		0x50
313 #define CX0342_GPXLTHD_H		0x51
314 #define CX0342_RBPXLTHD_L		0x52
315 #define CX0342_RBPXLTHD_H		0x53
316 #define CX0342_PLANETHD_L		0x54
317 #define CX0342_PLANETHD_H		0x55
318 #define CX0342_ROWDARK_TH		0x56
319 #define CX0342_ROWDARK_TOL		0x57
320 #define CX0342_RB_GAP_L			0x58
321 #define CX0342_RB_GAP_H			0x59
322 #define CX0342_G_GAP_L			0x5a
323 #define CX0342_G_GAP_H			0x5b
324 #define CX0342_AUTO_ROW_DARK		0x60
325 #define CX0342_MANUAL_DARK_VALUE	0x61
326 #define CX0342_GB_DARK_OFFSET		0x62
327 #define CX0342_GR_DARK_OFFSET		0x63
328 #define CX0342_RED_DARK_OFFSET		0x64
329 #define CX0342_BLUE_DARK_OFFSET		0x65
330 #define CX0342_DATA_SCALING_MULTI	0x66
331 #define CX0342_AUTOD_Q_FRAME		0x67
332 #define CX0342_AUTOD_ALLOW_VARI		0x68
333 #define CX0342_AUTO_DARK_VALUE_L	0x69
334 #define CX0342_AUTO_DARK_VALUE_H	0x6a
335 #define CX0342_IO_CTRL_0		0x70
336 #define CX0342_IO_CTRL_1		0x71
337 #define CX0342_IO_CTRL_2		0x72
338 #define CX0342_IDLE_CTRL		0x73
339 #define CX0342_TEST_MODE		0x74
340 #define CX0342_FRAME_FIX_DATA_TEST	0x75
341 #define CX0342_FRAME_CNT_TEST		0x76
342 #define CX0342_RST_OVERFLOW_L		0x80
343 #define CX0342_RST_OVERFLOW_H		0x81
344 #define CX0342_RST_UNDERFLOW_L		0x82
345 #define CX0342_RST_UNDERFLOW_H		0x83
346 #define CX0342_DATA_OVERFLOW_L		0x84
347 #define CX0342_DATA_OVERFLOW_H		0x85
348 #define CX0342_DATA_UNDERFLOW_L		0x86
349 #define CX0342_DATA_UNDERFLOW_H		0x87
350 #define CX0342_CHANNEL_0_0_L_irst	0x90
351 #define CX0342_CHANNEL_0_0_H_irst	0x91
352 #define CX0342_CHANNEL_0_1_L_irst	0x92
353 #define CX0342_CHANNEL_0_1_H_irst	0x93
354 #define CX0342_CHANNEL_0_2_L_irst	0x94
355 #define CX0342_CHANNEL_0_2_H_irst	0x95
356 #define CX0342_CHANNEL_0_3_L_irst	0x96
357 #define CX0342_CHANNEL_0_3_H_irst	0x97
358 #define CX0342_CHANNEL_0_4_L_irst	0x98
359 #define CX0342_CHANNEL_0_4_H_irst	0x99
360 #define CX0342_CHANNEL_0_5_L_irst	0x9a
361 #define CX0342_CHANNEL_0_5_H_irst	0x9b
362 #define CX0342_CHANNEL_0_6_L_irst	0x9c
363 #define CX0342_CHANNEL_0_6_H_irst	0x9d
364 #define CX0342_CHANNEL_0_7_L_irst	0x9e
365 #define CX0342_CHANNEL_0_7_H_irst	0x9f
366 #define CX0342_CHANNEL_1_0_L_itx	0xa0
367 #define CX0342_CHANNEL_1_0_H_itx	0xa1
368 #define CX0342_CHANNEL_1_1_L_itx	0xa2
369 #define CX0342_CHANNEL_1_1_H_itx	0xa3
370 #define CX0342_CHANNEL_1_2_L_itx	0xa4
371 #define CX0342_CHANNEL_1_2_H_itx	0xa5
372 #define CX0342_CHANNEL_1_3_L_itx	0xa6
373 #define CX0342_CHANNEL_1_3_H_itx	0xa7
374 #define CX0342_CHANNEL_1_4_L_itx	0xa8
375 #define CX0342_CHANNEL_1_4_H_itx	0xa9
376 #define CX0342_CHANNEL_1_5_L_itx	0xaa
377 #define CX0342_CHANNEL_1_5_H_itx	0xab
378 #define CX0342_CHANNEL_1_6_L_itx	0xac
379 #define CX0342_CHANNEL_1_6_H_itx	0xad
380 #define CX0342_CHANNEL_1_7_L_itx	0xae
381 #define CX0342_CHANNEL_1_7_H_itx	0xaf
382 #define CX0342_CHANNEL_2_0_L_iwl	0xb0
383 #define CX0342_CHANNEL_2_0_H_iwl	0xb1
384 #define CX0342_CHANNEL_2_1_L_iwl	0xb2
385 #define CX0342_CHANNEL_2_1_H_iwl	0xb3
386 #define CX0342_CHANNEL_2_2_L_iwl	0xb4
387 #define CX0342_CHANNEL_2_2_H_iwl	0xb5
388 #define CX0342_CHANNEL_2_3_L_iwl	0xb6
389 #define CX0342_CHANNEL_2_3_H_iwl	0xb7
390 #define CX0342_CHANNEL_2_4_L_iwl	0xb8
391 #define CX0342_CHANNEL_2_4_H_iwl	0xb9
392 #define CX0342_CHANNEL_2_5_L_iwl	0xba
393 #define CX0342_CHANNEL_2_5_H_iwl	0xbb
394 #define CX0342_CHANNEL_2_6_L_iwl	0xbc
395 #define CX0342_CHANNEL_2_6_H_iwl	0xbd
396 #define CX0342_CHANNEL_2_7_L_iwl	0xbe
397 #define CX0342_CHANNEL_2_7_H_iwl	0xbf
398 #define CX0342_CHANNEL_3_0_L_ensp	0xc0
399 #define CX0342_CHANNEL_3_0_H_ensp	0xc1
400 #define CX0342_CHANNEL_3_1_L_ensp	0xc2
401 #define CX0342_CHANNEL_3_1_H_ensp	0xc3
402 #define CX0342_CHANNEL_3_2_L_ensp	0xc4
403 #define CX0342_CHANNEL_3_2_H_ensp	0xc5
404 #define CX0342_CHANNEL_3_3_L_ensp	0xc6
405 #define CX0342_CHANNEL_3_3_H_ensp	0xc7
406 #define CX0342_CHANNEL_3_4_L_ensp	0xc8
407 #define CX0342_CHANNEL_3_4_H_ensp	0xc9
408 #define CX0342_CHANNEL_3_5_L_ensp	0xca
409 #define CX0342_CHANNEL_3_5_H_ensp	0xcb
410 #define CX0342_CHANNEL_3_6_L_ensp	0xcc
411 #define CX0342_CHANNEL_3_6_H_ensp	0xcd
412 #define CX0342_CHANNEL_3_7_L_ensp	0xce
413 #define CX0342_CHANNEL_3_7_H_ensp	0xcf
414 #define CX0342_CHANNEL_4_0_L_sela	0xd0
415 #define CX0342_CHANNEL_4_0_H_sela	0xd1
416 #define CX0342_CHANNEL_4_1_L_sela	0xd2
417 #define CX0342_CHANNEL_4_1_H_sela	0xd3
418 #define CX0342_CHANNEL_5_0_L_intla	0xe0
419 #define CX0342_CHANNEL_5_0_H_intla	0xe1
420 #define CX0342_CHANNEL_5_1_L_intla	0xe2
421 #define CX0342_CHANNEL_5_1_H_intla	0xe3
422 #define CX0342_CHANNEL_5_2_L_intla	0xe4
423 #define CX0342_CHANNEL_5_2_H_intla	0xe5
424 #define CX0342_CHANNEL_5_3_L_intla	0xe6
425 #define CX0342_CHANNEL_5_3_H_intla	0xe7
426 #define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0
427 #define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1
428 #define CX0342_CHANNEL_7_1_L_cds_pos	0xf2
429 #define CX0342_CHANNEL_7_1_H_cds_pos	0xf3
430 #define CX0342_SENSOR_HEIGHT_L		0xfb
431 #define CX0342_SENSOR_HEIGHT_H		0xfc
432 #define CX0342_SENSOR_WIDTH_L		0xfd
433 #define CX0342_SENSOR_WIDTH_H		0xfe
434 #define CX0342_VSYNC_HSYNC_READ		0xff
435 
436 struct cmd {
437 	u8 reg;
438 	u8 val;
439 };
440 
441 static const u8 DQT[17][130] = {
442 	/* Define quantization table (thanks to Thomas Kaiser) */
443 	{			/* Quality 0 */
444 	 0x00,
445 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
446 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
447 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
448 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
449 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
450 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
451 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
452 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
453 	 0x01,
454 	 0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06,
455 	 0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18,
456 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
457 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
458 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
459 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
460 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
461 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
462 	 },
463 	{			/* Quality 1 */
464 	 0x00,
465 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
466 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
467 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
468 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
469 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
470 	 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
471 	 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
472 	 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
473 	 0x01,
474 	 0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d,
475 	 0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31,
476 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
477 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
478 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
479 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
480 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
481 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
482 	 },
483 	{			/* Quality 2 */
484 	 0x00,
485 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
486 	 0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
487 	 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
488 	 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
489 	 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
490 	 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
491 	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
492 	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
493 	 0x01,
494 	 0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13,
495 	 0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a,
496 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
497 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
498 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
499 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
500 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
501 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
502 	 },
503 	{			/* Quality 3 */
504 	 0x00,
505 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
506 	 0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
507 	 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
508 	 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
509 	 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
510 	 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13,
511 	 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
512 	 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
513 	 0x01,
514 	 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
515 	 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
516 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
517 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
518 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
519 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
520 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
521 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
522 	 },
523 	{			/* Quality 4 */
524 	 0x00,
525 	 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
526 	 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
527 	 0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
528 	 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
529 	 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
530 	 0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17,
531 	 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
532 	 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
533 	 0x01,
534 	 0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20,
535 	 0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b,
536 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
537 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
538 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
539 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
540 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
541 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
542 	 },
543 	{			/* Quality 5 */
544 	 0x00,
545 	 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
546 	 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06,
547 	 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
548 	 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
549 	 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
550 	 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
551 	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
552 	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
553 	 0x01,
554 	 0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27,
555 	 0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94,
556 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
557 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
558 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
559 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
560 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
561 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
562 	 },
563 	{			/* Quality 6 */
564 	 0x00,
565 	 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
566 	 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07,
567 	 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
568 	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
569 	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
570 	 0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21,
571 	 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
572 	 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
573 	 0x01,
574 	 0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d,
575 	 0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad,
576 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
577 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
578 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
579 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
580 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
581 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
582 	 },
583 	{			/* Quality 7 */
584 	 0x00,
585 	 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
586 	 0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08,
587 	 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
588 	 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
589 	 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
590 	 0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26,
591 	 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
592 	 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
593 	 0x01,
594 	 0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
595 	 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
596 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
597 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
598 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
599 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
600 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
601 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
602 	 },
603 	{			/* Quality 8 */
604 	 0x00,
605 	 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
606 	 0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a,
607 	 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
608 	 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
609 	 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
610 	 0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
611 	 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
612 	 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
613 	 0x01,
614 	 0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41,
615 	 0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7,
616 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
617 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
618 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
619 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
620 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
621 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
622 	 },
623 	{			/* Quality 9 */
624 	 0x00,
625 	 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
626 	 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c,
627 	 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
628 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
629 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
630 	 0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39,
631 	 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
632 	 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
633 	 0x01,
634 	 0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
635 	 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
636 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
637 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
638 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
639 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
640 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
641 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
642 	 },
643 	{			/* Quality 10 */
644 	 0x00,
645 	 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
646 	 0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e,
647 	 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
648 	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
649 	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
650 	 0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42,
651 	 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
652 	 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
653 	 0x01,
654 	 0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b,
655 	 0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff,
656 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
657 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
658 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
659 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
660 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
661 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
662 	 },
663 	{			/* Quality 11 */
664 	 0x00,
665 	 0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
666 	 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10,
667 	 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
668 	 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
669 	 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
670 	 0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
671 	 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
672 	 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
673 	 0x01,
674 	 0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68,
675 	 0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff,
676 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
677 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
678 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
679 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
680 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
681 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
682 	 },
683 	{			/* Quality 12 */
684 	 0x00,
685 	 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
686 	 0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14,
687 	 0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
688 	 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
689 	 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
690 	 0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
691 	 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
692 	 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
693 	 0x01,
694 	 0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82,
695 	 0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
696 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
697 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
698 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
699 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
700 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
701 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
702 	 },
703 	{			/* Quality 13 */
704 	 0x00,
705 	 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
706 	 0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18,
707 	 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
708 	 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
709 	 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
710 	 0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72,
711 	 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
712 	 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
713 	 0x01,
714 	 0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c,
715 	 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
716 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
717 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
718 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
719 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
720 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
721 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
722 	 },
723 	{			/* Quality 14 */
724 	 0x00,
725 	 0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
726 	 0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c,
727 	 0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
728 	 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
729 	 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
730 	 0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85,
731 	 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
732 	 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
733 	 0x01,
734 	 0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6,
735 	 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
736 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
737 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
738 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
739 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
740 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
741 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
742 	 },
743 	{			/* Quality 15 */
744 	 0x00,
745 	 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
746 	 0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
747 	 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
748 	 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
749 	 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
750 	 0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98,
751 	 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
752 	 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
753 	 0x01,
754 	 0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0,
755 	 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
756 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
757 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
758 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
759 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
760 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
761 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
762 	 },
763 	{			/* Quality 16-31 */
764 	 0x00,
765 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
766 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
767 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
768 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
769 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
770 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
771 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
772 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
773 	 0x01,
774 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
775 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
776 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
777 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
778 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
779 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
780 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
781 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
782 	 }
783 };
784 
785 static const struct cmd tp6810_cx_init_common[] = {
786 	{0x1c, 0x00},
787 	{TP6800_R10_SIF_TYPE, 0x00},
788 	{0x4e, 0x00},
789 	{0x4f, 0x00},
790 	{TP6800_R50, 0xff},
791 	{TP6800_R51, 0x03},
792 	{0x00, 0x07},
793 	{TP6800_R79_QUALITY, 0x03},
794 	{TP6800_R2F_TIMING_CFG, 0x37},
795 	{TP6800_R30_SENSOR_CFG, 0x10},
796 	{TP6800_R21_ENDP_1_CTL, 0x00},
797 	{TP6800_R52, 0x40},
798 	{TP6800_R53, 0x40},
799 	{TP6800_R54_DARK_CFG, 0x40},
800 	{TP6800_R30_SENSOR_CFG, 0x18},
801 	{0x4b, 0x00},
802 	{TP6800_R3F_FRAME_RATE, 0x83},
803 	{TP6800_R79_QUALITY, 0x05},
804 	{TP6800_R21_ENDP_1_CTL, 0x00},
805 	{0x7c, 0x04},
806 	{0x25, 0x14},
807 	{0x26, 0x0f},
808 	{0x7b, 0x10},
809 };
810 
811 static const struct cmd tp6810_ov_init_common[] = {
812 	{0x1c, 0x00},
813 	{TP6800_R10_SIF_TYPE, 0x00},
814 	{0x4e, 0x00},
815 	{0x4f, 0x00},
816 	{TP6800_R50, 0xff},
817 	{TP6800_R51, 0x03},
818 	{0x00, 0x07},
819 	{TP6800_R52, 0x40},
820 	{TP6800_R53, 0x40},
821 	{TP6800_R54_DARK_CFG, 0x40},
822 	{TP6800_R79_QUALITY, 0x03},
823 	{TP6800_R2F_TIMING_CFG, 0x17},
824 	{TP6800_R30_SENSOR_CFG, 0x18},
825 	{TP6800_R21_ENDP_1_CTL, 0x00},
826 	{TP6800_R3F_FRAME_RATE, 0x86},
827 	{0x25, 0x18},
828 	{0x26, 0x0f},
829 	{0x7b, 0x90},
830 };
831 
832 static const struct cmd tp6810_bridge_start[] = {
833 	{0x59, 0x88},
834 	{0x5a, 0x0f},
835 	{0x5b, 0x4e},
836 	{TP6800_R5C_EDGE_THRLD, 0x63},
837 	{TP6800_R5D_DEMOSAIC_CFG, 0x00},
838 	{0x03, 0x7f},
839 	{0x04, 0x80},
840 	{0x06, 0x00},
841 	{0x00, 0x00},
842 };
843 
844 static const struct cmd tp6810_late_start[] = {
845 	{0x7d, 0x01},
846 	{0xb0, 0x04},
847 	{0xb1, 0x04},
848 	{0xb2, 0x04},
849 	{0xb3, 0x04},
850 	{0xb4, 0x04},
851 	{0xb5, 0x04},
852 	{0xb6, 0x08},
853 	{0xb7, 0x08},
854 	{0xb8, 0x04},
855 	{0xb9, 0x04},
856 	{0xba, 0x04},
857 	{0xbb, 0x04},
858 	{0xbc, 0x04},
859 	{0xbd, 0x08},
860 	{0xbe, 0x08},
861 	{0xbf, 0x08},
862 	{0xc0, 0x04},
863 	{0xc1, 0x04},
864 	{0xc2, 0x08},
865 	{0xc3, 0x08},
866 	{0xc4, 0x08},
867 	{0xc5, 0x08},
868 	{0xc6, 0x08},
869 	{0xc7, 0x13},
870 	{0xc8, 0x04},
871 	{0xc9, 0x08},
872 	{0xca, 0x08},
873 	{0xcb, 0x08},
874 	{0xcc, 0x08},
875 	{0xcd, 0x08},
876 	{0xce, 0x13},
877 	{0xcf, 0x13},
878 	{0xd0, 0x08},
879 	{0xd1, 0x08},
880 	{0xd2, 0x08},
881 	{0xd3, 0x08},
882 	{0xd4, 0x08},
883 	{0xd5, 0x13},
884 	{0xd6, 0x13},
885 	{0xd7, 0x13},
886 	{0xd8, 0x08},
887 	{0xd9, 0x08},
888 	{0xda, 0x08},
889 	{0xdb, 0x08},
890 	{0xdc, 0x13},
891 	{0xdd, 0x13},
892 	{0xde, 0x13},
893 	{0xdf, 0x13},
894 	{0xe0, 0x08},
895 	{0xe1, 0x08},
896 	{0xe2, 0x08},
897 	{0xe3, 0x13},
898 	{0xe4, 0x13},
899 	{0xe5, 0x13},
900 	{0xe6, 0x13},
901 	{0xe7, 0x13},
902 	{0xe8, 0x08},
903 	{0xe9, 0x08},
904 	{0xea, 0x13},
905 	{0xeb, 0x13},
906 	{0xec, 0x13},
907 	{0xed, 0x13},
908 	{0xee, 0x13},
909 	{0xef, 0x13},
910 	{0x7d, 0x02},
911 
912 	/* later after isoc start */
913 	{0x7d, 0x08},
914 	{0x7d, 0x00},
915 };
916 
917 static const struct cmd cx0342_timing_seq[] = {
918 	{CX0342_CHANNEL_0_1_L_irst, 0x20},
919 	{CX0342_CHANNEL_0_2_L_irst, 0x24},
920 	{CX0342_CHANNEL_0_2_H_irst, 0x00},
921 	{CX0342_CHANNEL_0_3_L_irst, 0x2f},
922 	{CX0342_CHANNEL_0_3_H_irst, 0x00},
923 	{CX0342_CHANNEL_1_0_L_itx, 0x02},
924 	{CX0342_CHANNEL_1_0_H_itx, 0x00},
925 	{CX0342_CHANNEL_1_1_L_itx, 0x20},
926 	{CX0342_CHANNEL_1_1_H_itx, 0x00},
927 	{CX0342_CHANNEL_1_2_L_itx, 0xe4},
928 	{CX0342_CHANNEL_1_2_H_itx, 0x00},
929 	{CX0342_CHANNEL_1_3_L_itx, 0xee},
930 	{CX0342_CHANNEL_1_3_H_itx, 0x00},
931 	{CX0342_CHANNEL_2_0_L_iwl, 0x30},
932 	{CX0342_CHANNEL_2_0_H_iwl, 0x00},
933 	{CX0342_CHANNEL_3_0_L_ensp, 0x34},
934 	{CX0342_CHANNEL_3_1_L_ensp, 0xe2},
935 	{CX0342_CHANNEL_3_1_H_ensp, 0x00},
936 	{CX0342_CHANNEL_3_2_L_ensp, 0xf6},
937 	{CX0342_CHANNEL_3_2_H_ensp, 0x00},
938 	{CX0342_CHANNEL_3_3_L_ensp, 0xf4},
939 	{CX0342_CHANNEL_3_3_H_ensp, 0x02},
940 	{CX0342_CHANNEL_4_0_L_sela, 0x26},
941 	{CX0342_CHANNEL_4_0_H_sela, 0x00},
942 	{CX0342_CHANNEL_4_1_L_sela, 0xe2},
943 	{CX0342_CHANNEL_4_1_H_sela, 0x00},
944 	{CX0342_CHANNEL_5_0_L_intla, 0x26},
945 	{CX0342_CHANNEL_5_1_L_intla, 0x29},
946 	{CX0342_CHANNEL_5_2_L_intla, 0xf0},
947 	{CX0342_CHANNEL_5_2_H_intla, 0x00},
948 	{CX0342_CHANNEL_5_3_L_intla, 0xf3},
949 	{CX0342_CHANNEL_5_3_H_intla, 0x00},
950 	{CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24},
951 	{CX0342_CHANNEL_7_1_L_cds_pos, 0x02},
952 	{CX0342_TIMING_EN, 0x01},
953 };
954 
955 /* define the JPEG header */
956 static void jpeg_define(u8 *jpeg_hdr,
957 			int height,
958 			int width)
959 {
960 	memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head);
961 	jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8;
962 	jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height;
963 	jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8;
964 	jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width;
965 }
966 
967 /* set the JPEG quality for sensor soi763a */
968 static void jpeg_set_qual(u8 *jpeg_hdr,
969 			  int quality)
970 {
971 	int i, sc;
972 
973 	if (quality <= 0)
974 		sc = 5000;
975 	else if (quality < 50)
976 		sc = 5000 / quality;
977 	else
978 		sc = 200 - quality * 2;
979 	for (i = 0; i < 64; i++) {
980 		jpeg_hdr[JPEG_QT0_OFFSET + i] =
981 			(jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100;
982 		jpeg_hdr[JPEG_QT1_OFFSET + i] =
983 			(jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100;
984 	}
985 }
986 
987 static void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
988 {
989 	struct usb_device *dev = gspca_dev->dev;
990 	int ret;
991 
992 	if (gspca_dev->usb_err < 0)
993 		return;
994 	ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
995 			0x0e,
996 			USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
997 			value, index, NULL, 0, 500);
998 	if (ret < 0) {
999 		pr_err("reg_w err %d\n", ret);
1000 		gspca_dev->usb_err = ret;
1001 	}
1002 }
1003 
1004 /* the returned value is in gspca_dev->usb_buf */
1005 static void reg_r(struct gspca_dev *gspca_dev, u8 index)
1006 {
1007 	struct usb_device *dev = gspca_dev->dev;
1008 	int ret;
1009 
1010 	if (gspca_dev->usb_err < 0)
1011 		return;
1012 	ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
1013 			0x0d,
1014 			USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1015 			0, index, gspca_dev->usb_buf, 1, 500);
1016 	if (ret < 0) {
1017 		pr_err("reg_r err %d\n", ret);
1018 		gspca_dev->usb_err = ret;
1019 	}
1020 }
1021 
1022 static void reg_w_buf(struct gspca_dev *gspca_dev,
1023 			const struct cmd *p, int l)
1024 {
1025 	do {
1026 		reg_w(gspca_dev, p->reg, p->val);
1027 		p++;
1028 	} while (--l > 0);
1029 }
1030 
1031 static int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
1032 {
1033 	struct sd *sd = (struct sd *) gspca_dev;
1034 
1035 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1036 	reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1037 	reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value);
1038 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01);
1039 	if (sd->bridge == BRIDGE_TP6800)
1040 		return 0;
1041 	msleep(5);
1042 	reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1043 	if (gspca_dev->usb_buf[0] == 0)
1044 		return 0;
1045 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1046 	return -1;				/* error */
1047 }
1048 
1049 static void i2c_w_buf(struct gspca_dev *gspca_dev,
1050 			const struct cmd *p, int l)
1051 {
1052 	do {
1053 		i2c_w(gspca_dev, p->reg, p->val);
1054 		p++;
1055 	} while (--l > 0);
1056 }
1057 
1058 static int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len)
1059 {
1060 	struct sd *sd = (struct sd *) gspca_dev;
1061 	int v;
1062 
1063 	reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1064 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02);
1065 	msleep(5);
1066 	reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA);
1067 	v = gspca_dev->usb_buf[0];
1068 	if (sd->bridge == BRIDGE_TP6800)
1069 		return v;
1070 	if (len > 1) {
1071 		reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2);
1072 		v |= (gspca_dev->usb_buf[0] << 8);
1073 	}
1074 	reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1075 	if (gspca_dev->usb_buf[0] == 0)
1076 		return v;
1077 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1078 	return -1;
1079 }
1080 
1081 static void bulk_w(struct gspca_dev *gspca_dev,
1082 		  u8 tag,
1083 		  const u8 *data,
1084 		  int length)
1085 {
1086 	struct usb_device *dev = gspca_dev->dev;
1087 	int count, actual_count, ret;
1088 
1089 	if (gspca_dev->usb_err < 0)
1090 		return;
1091 	for (;;) {
1092 		count = length > BULK_OUT_SIZE - 1
1093 				? BULK_OUT_SIZE - 1 : length;
1094 		gspca_dev->usb_buf[0] = tag;
1095 		memcpy(&gspca_dev->usb_buf[1], data, count);
1096 		ret = usb_bulk_msg(dev,
1097 				   usb_sndbulkpipe(dev, 3),
1098 				   gspca_dev->usb_buf, count + 1,
1099 				   &actual_count, 500);
1100 		if (ret < 0) {
1101 			pr_err("bulk write error %d tag=%02x\n",
1102 				ret, tag);
1103 			gspca_dev->usb_err = ret;
1104 			return;
1105 		}
1106 		length -= count;
1107 		if (length <= 0)
1108 			break;
1109 		data += count;
1110 	}
1111 }
1112 
1113 static int probe_6810(struct gspca_dev *gspca_dev)
1114 {
1115 	u8 gpio;
1116 	int ret;
1117 
1118 	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
1119 	gpio = gspca_dev->usb_buf[0];
1120 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1121 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1122 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1123 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);	/* i2c 16 bits */
1124 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);	/* ov??? */
1125 	reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00);
1126 	if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1127 		return SENSOR_SOI763A;
1128 
1129 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1130 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1131 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f);	/* (unknown i2c) */
1132 	if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1133 		return -2;
1134 
1135 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1136 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1137 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1138 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1139 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11);	/* tas??? / hv??? */
1140 	ret = i2c_r(gspca_dev, 0x00, 1);
1141 	if (ret > 0)
1142 		return -3;
1143 
1144 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1145 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1146 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1147 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e);	/* po??? */
1148 	ret = i2c_r(gspca_dev, 0x00, 1);
1149 	if (ret > 0)
1150 		return -4;
1151 
1152 	ret = i2c_r(gspca_dev, 0x01, 1);
1153 	if (ret > 0)
1154 		return -5;
1155 
1156 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1157 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1158 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1159 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);	/* i2c 16 bits */
1160 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d);	/* mi/mt??? */
1161 	ret = i2c_r(gspca_dev, 0x00, 2);
1162 	if (ret > 0)
1163 		return -6;
1164 
1165 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1166 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1167 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1168 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c);	/* mi/mt??? */
1169 	ret = i2c_r(gspca_dev, 0x36, 2);
1170 	if (ret > 0)
1171 		return -7;
1172 
1173 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1174 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1175 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1176 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61);	/* (unknown i2c) */
1177 	reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10);
1178 	if (i2c_w(gspca_dev, 0xff, 0x00) >= 0)
1179 		return -8;
1180 
1181 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1182 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1183 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1184 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1185 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);	/* cx0342 */
1186 	ret = i2c_r(gspca_dev, 0x00, 1);
1187 	if (ret > 0)
1188 		return SENSOR_CX0342;
1189 	return -9;
1190 }
1191 
1192 static void cx0342_6810_init(struct gspca_dev *gspca_dev)
1193 {
1194 	static const struct cmd reg_init_1[] = {
1195 		{TP6800_R2F_TIMING_CFG, 0x2f},
1196 		{0x25, 0x02},
1197 		{TP6800_R21_ENDP_1_CTL, 0x00},
1198 		{TP6800_R3F_FRAME_RATE, 0x80},
1199 		{TP6800_R2F_TIMING_CFG, 0x2f},
1200 		{TP6800_R18_GPIO_DATA, 0xe1},
1201 		{TP6800_R18_GPIO_DATA, 0xc1},
1202 		{TP6800_R18_GPIO_DATA, 0xe1},
1203 		{TP6800_R11_SIF_CONTROL, 0x00},
1204 	};
1205 	static const struct cmd reg_init_2[] = {
1206 		{TP6800_R78_FORMAT, 0x48},
1207 		{TP6800_R11_SIF_CONTROL, 0x00},
1208 	};
1209 	static const struct cmd sensor_init[] = {
1210 		{CX0342_OUTPUT_CTRL, 0x07},
1211 		{CX0342_BYPASS_MODE, 0x58},
1212 		{CX0342_GPXLTHD_L, 0x28},
1213 		{CX0342_RBPXLTHD_L, 0x28},
1214 		{CX0342_PLANETHD_L, 0x50},
1215 		{CX0342_PLANETHD_H, 0x03},
1216 		{CX0342_RB_GAP_L, 0xff},
1217 		{CX0342_RB_GAP_H, 0x07},
1218 		{CX0342_G_GAP_L, 0xff},
1219 		{CX0342_G_GAP_H, 0x07},
1220 		{CX0342_RST_OVERFLOW_L, 0x5c},
1221 		{CX0342_RST_OVERFLOW_H, 0x01},
1222 		{CX0342_DATA_OVERFLOW_L, 0xfc},
1223 		{CX0342_DATA_OVERFLOW_H, 0x03},
1224 		{CX0342_DATA_UNDERFLOW_L, 0x00},
1225 		{CX0342_DATA_UNDERFLOW_H, 0x00},
1226 		{CX0342_SYS_CTRL_0, 0x40},
1227 		{CX0342_GLOBAL_GAIN, 0x01},
1228 		{CX0342_CLOCK_GEN, 0x00},
1229 		{CX0342_SYS_CTRL_0, 0x02},
1230 		{CX0342_IDLE_CTRL, 0x05},
1231 		{CX0342_ADCGN, 0x00},
1232 		{CX0342_ADC_CTL, 0x00},
1233 		{CX0342_LVRST_BLBIAS, 0x01},
1234 		{CX0342_VTHSEL, 0x0b},
1235 		{CX0342_RAMP_RIV, 0x0b},
1236 		{CX0342_LDOSEL, 0x07},
1237 		{CX0342_SPV_VALUE_L, 0x40},
1238 		{CX0342_SPV_VALUE_H, 0x02},
1239 
1240 		{CX0342_AUTO_ADC_CALIB, 0x81},
1241 		{CX0342_TIMING_EN, 0x01},
1242 	};
1243 
1244 	reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1245 	reg_w_buf(gspca_dev, tp6810_cx_init_common,
1246 			ARRAY_SIZE(tp6810_cx_init_common));
1247 	reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1248 
1249 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);	/* cx0342 I2C addr */
1250 	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1251 	i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
1252 }
1253 
1254 static void soi763a_6810_init(struct gspca_dev *gspca_dev)
1255 {
1256 	static const struct cmd reg_init_1[] = {
1257 		{TP6800_R2F_TIMING_CFG, 0x2f},
1258 		{TP6800_R18_GPIO_DATA, 0xe1},
1259 		{0x25, 0x02},
1260 		{TP6800_R21_ENDP_1_CTL, 0x00},
1261 		{TP6800_R3F_FRAME_RATE, 0x80},
1262 		{TP6800_R2F_TIMING_CFG, 0x2f},
1263 		{TP6800_R18_GPIO_DATA, 0xc1},
1264 	};
1265 	static const struct cmd reg_init_2[] = {
1266 		{TP6800_R78_FORMAT, 0x54},
1267 	};
1268 	static const struct cmd sensor_init[] = {
1269 		{0x00, 0x00},
1270 		{0x01, 0x80},
1271 		{0x02, 0x80},
1272 		{0x03, 0x90},
1273 		{0x04, 0x20},
1274 		{0x05, 0x20},
1275 		{0x06, 0x80},
1276 		{0x07, 0x00},
1277 		{0x08, 0xff},
1278 		{0x09, 0xff},
1279 		{0x0a, 0x76},		/* 7630 = soi673a */
1280 		{0x0b, 0x30},
1281 		{0x0c, 0x20},
1282 		{0x0d, 0x20},
1283 		{0x0e, 0xff},
1284 		{0x0f, 0xff},
1285 		{0x10, 0x41},
1286 		{0x15, 0x14},
1287 		{0x11, 0x40},
1288 		{0x12, 0x48},
1289 		{0x13, 0x80},
1290 		{0x14, 0x80},
1291 		{0x16, 0x03},
1292 		{0x28, 0xb0},
1293 		{0x71, 0x20},
1294 		{0x75, 0x8e},
1295 		{0x17, 0x1b},
1296 		{0x18, 0xbd},
1297 		{0x19, 0x05},
1298 		{0x1a, 0xf6},
1299 		{0x1b, 0x04},
1300 		{0x1c, 0x7f},		/* omnivision */
1301 		{0x1d, 0xa2},
1302 		{0x1e, 0x00},
1303 		{0x1f, 0x00},
1304 		{0x20, 0x45},
1305 		{0x21, 0x80},
1306 		{0x22, 0x80},
1307 		{0x23, 0xee},
1308 		{0x24, 0x50},
1309 		{0x25, 0x7a},
1310 		{0x26, 0xa0},
1311 		{0x27, 0x9a},
1312 		{0x29, 0x30},
1313 		{0x2a, 0x80},
1314 		{0x2b, 0x00},
1315 		{0x2c, 0xac},
1316 		{0x2d, 0x05},
1317 		{0x2e, 0x80},
1318 		{0x2f, 0x3c},
1319 		{0x30, 0x22},
1320 		{0x31, 0x00},
1321 		{0x32, 0x86},
1322 		{0x33, 0x08},
1323 		{0x34, 0xff},
1324 		{0x35, 0xff},
1325 		{0x36, 0xff},
1326 		{0x37, 0xff},
1327 		{0x38, 0xff},
1328 		{0x39, 0xff},
1329 		{0x3a, 0xfe},
1330 		{0x3b, 0xfe},
1331 		{0x3c, 0xfe},
1332 		{0x3d, 0xfe},
1333 		{0x3e, 0xfe},
1334 		{0x3f, 0x71},
1335 		{0x40, 0xff},
1336 		{0x41, 0xff},
1337 		{0x42, 0xff},
1338 		{0x43, 0xff},
1339 		{0x44, 0xff},
1340 		{0x45, 0xff},
1341 		{0x46, 0xff},
1342 		{0x47, 0xff},
1343 		{0x48, 0xff},
1344 		{0x49, 0xff},
1345 		{0x4a, 0xfe},
1346 		{0x4b, 0xff},
1347 		{0x4c, 0x00},
1348 		{0x4d, 0x00},
1349 		{0x4e, 0xff},
1350 		{0x4f, 0xff},
1351 		{0x50, 0xff},
1352 		{0x51, 0xff},
1353 		{0x52, 0xff},
1354 		{0x53, 0xff},
1355 		{0x54, 0xff},
1356 		{0x55, 0xff},
1357 		{0x56, 0xff},
1358 		{0x57, 0xff},
1359 		{0x58, 0xff},
1360 		{0x59, 0xff},
1361 		{0x5a, 0xff},
1362 		{0x5b, 0xfe},
1363 		{0x5c, 0xff},
1364 		{0x5d, 0x8f},
1365 		{0x5e, 0xff},
1366 		{0x5f, 0x8f},
1367 		{0x60, 0xa2},
1368 		{0x61, 0x4a},
1369 		{0x62, 0xf3},
1370 		{0x63, 0x75},
1371 		{0x64, 0xf0},
1372 		{0x65, 0x00},
1373 		{0x66, 0x55},
1374 		{0x67, 0x92},
1375 		{0x68, 0xa0},
1376 		{0x69, 0x4a},
1377 		{0x6a, 0x22},
1378 		{0x6b, 0x00},
1379 		{0x6c, 0x33},
1380 		{0x6d, 0x44},
1381 		{0x6e, 0x22},
1382 		{0x6f, 0x84},
1383 		{0x70, 0x0b},
1384 		{0x72, 0x10},
1385 		{0x73, 0x50},
1386 		{0x74, 0x21},
1387 		{0x76, 0x00},
1388 		{0x77, 0xa5},
1389 		{0x78, 0x80},
1390 		{0x79, 0x80},
1391 		{0x7a, 0x80},
1392 		{0x7b, 0xe2},
1393 		{0x7c, 0x00},
1394 		{0x7d, 0xf7},
1395 		{0x7e, 0x00},
1396 		{0x7f, 0x00},
1397 	};
1398 
1399 	reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1400 	reg_w_buf(gspca_dev, tp6810_ov_init_common,
1401 			ARRAY_SIZE(tp6810_ov_init_common));
1402 	reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1403 
1404 	i2c_w(gspca_dev, 0x12, 0x80);		/* sensor reset */
1405 	msleep(10);
1406 	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1407 }
1408 
1409 /* set the gain and exposure */
1410 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain,
1411 							s32 blue, s32 red)
1412 {
1413 	struct sd *sd = (struct sd *) gspca_dev;
1414 
1415 	if (sd->sensor == SENSOR_CX0342) {
1416 		expo = (expo << 2) - 1;
1417 		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo);
1418 		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8);
1419 		if (sd->bridge == BRIDGE_TP6800)
1420 			i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H,
1421 						gain >> 8);
1422 		i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, gain);
1423 		if (sd->bridge == BRIDGE_TP6800)
1424 			i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H,
1425 					gain >> 8);
1426 		i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, gain);
1427 		if (sd->sensor == SENSOR_CX0342) {
1428 			if (sd->bridge == BRIDGE_TP6800)
1429 				i2c_w(gspca_dev, CX0342_RAW_BGAIN_H,
1430 						blue >> 8);
1431 			i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, blue);
1432 			if (sd->bridge == BRIDGE_TP6800)
1433 				i2c_w(gspca_dev, CX0342_RAW_RGAIN_H,
1434 						red >> 8);
1435 			i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, red);
1436 		}
1437 		i2c_w(gspca_dev, CX0342_SYS_CTRL_0,
1438 				sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81);
1439 		return;
1440 	}
1441 
1442 	/* soi763a */
1443 	i2c_w(gspca_dev, 0x10,		/* AEC_H (exposure time) */
1444 			 expo);
1445 /*	i2c_w(gspca_dev, 0x76, 0x02);	 * AEC_L ([1:0] */
1446 	i2c_w(gspca_dev, 0x00,		/* gain */
1447 			 gain);
1448 }
1449 
1450 /* set the JPEG quantization tables */
1451 static void set_dqt(struct gspca_dev *gspca_dev, u8 q)
1452 {
1453 	struct sd *sd = (struct sd *) gspca_dev;
1454 
1455 	/* update the jpeg quantization tables */
1456 	gspca_dbg(gspca_dev, D_STREAM, "q %d -> %d\n", sd->quality, q);
1457 	sd->quality = q;
1458 	if (q > 16)
1459 		q = 16;
1460 	if (sd->sensor == SENSOR_SOI763A)
1461 		jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]);
1462 	else
1463 		memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1],
1464 			DQT[q], sizeof DQT[0]);
1465 }
1466 
1467 /* set the JPEG compression quality factor */
1468 static void setquality(struct gspca_dev *gspca_dev, s32 q)
1469 {
1470 	struct sd *sd = (struct sd *) gspca_dev;
1471 
1472 	if (q != 16)
1473 		q = 15 - q;
1474 
1475 	reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00);
1476 	reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04);
1477 	reg_w(gspca_dev, TP6800_R79_QUALITY, q);
1478 
1479 	/* auto quality */
1480 	if (q == 15 && sd->bridge == BRIDGE_TP6810) {
1481 		msleep(4);
1482 		reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19);
1483 	}
1484 }
1485 
1486 static const u8 color_null[18] = {
1487 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1488 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1489 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1490 };
1491 static const u8 color_gain[NSENSORS][18] = {
1492 [SENSOR_CX0342] =
1493 	{0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00,	/* Y R/G/B (LE values) */
1494 	 0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00,	/* U R/G/B */
1495 	 0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03},	/* V R/G/B */
1496 [SENSOR_SOI763A] =
1497 	{0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00,	/* Y R/G/B (LE values) */
1498 	 0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00,	/* U R/G/B */
1499 	 0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03},	/* V R/G/B */
1500 };
1501 
1502 static void setgamma(struct gspca_dev *gspca_dev, s32 gamma)
1503 {
1504 	struct sd *sd = (struct sd *) gspca_dev;
1505 #define NGAMMA 6
1506 	static const u8 gamma_tb[NGAMMA][3][1024] = {
1507 	    {				/* gamma 0 - from tp6800 + soi763a */
1508 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1509 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1510 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1511 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1512 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1513 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1514 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1515 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1516 		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1517 		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1518 		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1519 		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1520 		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1521 		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1522 		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1523 		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1524 		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1525 		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1526 		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1527 		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1528 		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1529 		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1530 		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1531 		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1532 		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1533 		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1534 		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1535 		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1536 		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1537 		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1538 		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1539 		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1540 		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1541 		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1542 		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1543 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1544 		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1545 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1546 		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1547 		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1548 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1549 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1550 		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1551 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1552 		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1553 		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1554 		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1555 		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1556 		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1557 		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1558 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1559 		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1560 		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1561 		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1562 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1563 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1564 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1565 		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1566 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1567 		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1568 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1569 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1570 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1571 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1572 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1573 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1574 		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1575 		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1576 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1577 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1578 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1579 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1580 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1581 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1582 		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1583 		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1584 		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1585 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1586 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1587 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1588 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1589 		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1590 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1591 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1592 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1593 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1594 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1595 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1596 		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1597 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1598 		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1599 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1600 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1601 		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1602 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1603 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1604 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1605 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1606 		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1607 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1608 		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1609 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1610 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1611 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1612 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1613 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1614 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1615 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1616 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1617 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1618 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1619 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1620 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1621 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1622 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1623 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1624 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1625 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1626 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1627 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1628 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1629 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1630 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1631 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1632 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1633 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1634 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1635 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1636 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1637 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1638 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1639 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1640 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1641 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1642 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1643 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1644 		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1645 		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1646 		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1647 		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1648 		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1649 		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1650 		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1651 		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1652 		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1653 		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1654 		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1655 		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1656 		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1657 		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1658 		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1659 		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1660 		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1661 		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1662 		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1663 		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1664 		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1665 		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1666 		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1667 		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1668 		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1669 		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1670 		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1671 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1672 		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1673 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1674 		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1675 		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1676 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1677 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1678 		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1679 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1680 		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1681 		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1682 		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1683 		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1684 		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1685 		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1686 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1687 		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1688 		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1689 		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1690 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1691 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1692 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1693 		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1694 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1695 		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1696 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1697 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1698 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1699 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1700 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1701 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1702 		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1703 		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1704 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1705 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1706 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1707 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1708 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1709 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1710 		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1711 		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1712 		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1713 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1714 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1715 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1716 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1717 		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1718 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1719 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1720 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1721 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1722 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1723 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1724 		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1725 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1726 		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1727 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1728 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1729 		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1730 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1731 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1732 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1733 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1734 		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1735 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1736 		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1737 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1738 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1739 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1740 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1741 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1742 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1743 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1744 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1745 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1746 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1747 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1748 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1749 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1750 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1751 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1752 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1753 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1754 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1755 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1756 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1757 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1758 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1759 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1760 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1761 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1762 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1763 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1764 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1765 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1766 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1767 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1768 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1769 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1770 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1771 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1772 		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1773 		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1774 		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1775 		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1776 		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1777 		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1778 		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1779 		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1780 		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1781 		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1782 		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1783 		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1784 		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1785 		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1786 		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1787 		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1788 		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1789 		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1790 		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1791 		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1792 		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1793 		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1794 		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1795 		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1796 		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1797 		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1798 		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76,
1799 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1800 		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1801 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1802 		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1803 		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1804 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1805 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1806 		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1807 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1808 		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1809 		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1810 		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1811 		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1812 		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1813 		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1814 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1815 		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1816 		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1817 		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1818 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1819 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1820 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1821 		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1822 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1823 		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1824 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1825 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1826 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1827 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1828 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1829 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1830 		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1831 		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1832 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1833 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1834 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1835 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1836 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1837 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1838 		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1839 		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1840 		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1841 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1842 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1843 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1844 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1845 		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1846 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1847 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1848 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1849 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1850 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1851 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1852 		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1853 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1854 		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1855 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1856 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1857 		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1858 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1859 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1860 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1861 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1862 		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1863 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1864 		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1865 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1866 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1867 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1868 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1869 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1870 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1871 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1872 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1873 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1874 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1875 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1876 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1877 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1878 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1879 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1880 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1881 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1882 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1883 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1884 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1885 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1886 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1887 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1888 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1889 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1890 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1891 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
1892 	    },
1893 	    {				/* gamma 1 - from tp6810 + soi763a */
1894 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1895 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1896 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1897 		 0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a,
1898 		 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15,
1899 		 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
1900 		 0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27,
1901 		 0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f,
1902 		 0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35,
1903 		 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c,
1904 		 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
1905 		 0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49,
1906 		 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d,
1907 		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
1908 		 0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59,
1909 		 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e,
1910 		 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61,
1911 		 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66,
1912 		 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69,
1913 		 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1914 		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
1915 		 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
1916 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
1917 		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c,
1918 		 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80,
1919 		 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84,
1920 		 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
1921 		 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
1922 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
1923 		 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91,
1924 		 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93,
1925 		 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97,
1926 		 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
1927 		 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
1928 		 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e,
1929 		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
1930 		 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
1931 		 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
1932 		 0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1933 		 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab,
1934 		 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae,
1935 		 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
1936 		 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1937 		 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
1938 		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
1939 		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
1940 		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
1941 		 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
1942 		 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1943 		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
1944 		 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4,
1945 		 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
1946 		 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
1947 		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
1948 		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
1949 		 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1950 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1951 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
1952 		 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
1953 		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
1954 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
1955 		 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
1956 		 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
1957 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
1958 		 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
1959 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
1960 		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
1961 		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
1962 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
1963 		 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8,
1964 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
1965 		 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
1966 		 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed,
1967 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
1968 		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1969 		 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
1970 		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
1971 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
1972 		 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1973 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
1974 		 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1975 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1976 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
1977 		 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe,
1978 		 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
1979 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1980 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1981 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1982 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1983 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1984 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1985 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1986 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1987 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1988 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1989 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1990 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1991 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1992 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1993 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1994 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1995 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1996 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1997 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1998 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1999 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2000 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2001 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2002 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2003 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2004 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2005 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2006 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2007 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2008 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2009 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2010 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2011 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2012 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2013 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2014 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2015 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2016 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2017 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2018 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2019 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2020 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2021 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2022 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2023 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2024 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2025 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03,
2026 		 0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d,
2027 		 0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15,
2028 		 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
2029 		 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25,
2030 		 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c,
2031 		 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31,
2032 		 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38,
2033 		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d,
2034 		 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43,
2035 		 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48,
2036 		 0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c,
2037 		 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50,
2038 		 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55,
2039 		 0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59,
2040 		 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2041 		 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60,
2042 		 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65,
2043 		 0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67,
2044 		 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a,
2045 		 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e,
2046 		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2047 		 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
2048 		 0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78,
2049 		 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a,
2050 		 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d,
2051 		 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2052 		 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
2053 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
2054 		 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89,
2055 		 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b,
2056 		 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2057 		 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2058 		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2059 		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2060 		 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2061 		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2062 		 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
2063 		 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2064 		 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2065 		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2066 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2067 		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2068 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2069 		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2070 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
2071 		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2072 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
2073 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
2074 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
2075 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
2076 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
2077 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
2078 		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
2079 		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
2080 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2081 		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2082 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
2083 		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2084 		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2085 		 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9,
2086 		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
2087 		 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2088 		 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
2089 		 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf,
2090 		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2091 		 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
2092 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4,
2093 		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2094 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2095 		 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2096 		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
2097 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2098 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
2099 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2100 		 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2,
2101 		 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3,
2102 		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2103 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2104 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2105 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
2106 		 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2107 		 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2108 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
2109 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2110 		 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
2111 		 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2112 		 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5,
2113 		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7,
2114 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8,
2115 		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2116 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2117 		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc,
2118 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2119 		 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2120 		 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
2121 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2122 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2123 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2124 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2125 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2126 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2127 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2128 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2129 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2130 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2131 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2132 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2133 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2134 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2135 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2136 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2137 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2138 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2139 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2140 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2141 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2142 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2143 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2144 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2145 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2146 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2147 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2148 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2149 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2150 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2151 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2152 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2153 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2154 		 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07,
2155 		 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e,
2156 		 0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16,
2157 		 0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
2158 		 0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23,
2159 		 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29,
2160 		 0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30,
2161 		 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35,
2162 		 0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a,
2163 		 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d,
2164 		 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43,
2165 		 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47,
2166 		 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b,
2167 		 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f,
2168 		 0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53,
2169 		 0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56,
2170 		 0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a,
2171 		 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2172 		 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60,
2173 		 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63,
2174 		 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66,
2175 		 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69,
2176 		 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2177 		 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e,
2178 		 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2179 		 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74,
2180 		 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77,
2181 		 0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79,
2182 		 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b,
2183 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
2184 		 0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2185 		 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82,
2186 		 0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2187 		 0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88,
2188 		 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2189 		 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2190 		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
2191 		 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2192 		 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2193 		 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94,
2194 		 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96,
2195 		 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
2196 		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2197 		 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
2198 		 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2199 		 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0,
2200 		 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2201 		 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
2202 		 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
2203 		 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6,
2204 		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
2205 		 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2206 		 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac,
2207 		 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae,
2208 		 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
2209 		 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2210 		 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2,
2211 		 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
2212 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6,
2213 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2214 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2215 		 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba,
2216 		 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2217 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2218 		 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2219 		 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2220 		 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
2221 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2222 		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2223 		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2224 		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2225 		 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2226 		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2227 		 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2228 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2229 		 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2230 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2231 		 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
2232 		 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7,
2233 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2234 		 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2235 		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
2236 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2237 		 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
2238 		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0,
2239 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
2240 		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3,
2241 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4,
2242 		 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
2243 		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
2244 		 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2245 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
2246 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2247 		 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2248 		 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef,
2249 		 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1,
2250 		 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2251 		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2252 		 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2253 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
2254 		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2255 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2256 		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc,
2257 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd,
2258 		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
2259 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2260 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2261 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2262 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2263 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2264 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2265 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2266 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2267 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2268 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2269 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2270 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2271 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2272 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2273 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2274 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2275 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2276 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2277 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
2278 	    },
2279 	    {							/* gamma 2 */
2280 		{0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c,
2281 		 0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17,
2282 		 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22,
2283 		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
2284 		 0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34,
2285 		 0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b,
2286 		 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
2287 		 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49,
2288 		 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f,
2289 		 0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55,
2290 		 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a,
2291 		 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
2292 		 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63,
2293 		 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
2294 		 0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2295 		 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70,
2296 		 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74,
2297 		 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78,
2298 		 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
2299 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
2300 		 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82,
2301 		 0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2302 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89,
2303 		 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d,
2304 		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
2305 		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
2306 		 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
2307 		 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2308 		 0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99,
2309 		 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2310 		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
2311 		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2312 		 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3,
2313 		 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5,
2314 		 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8,
2315 		 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2316 		 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad,
2317 		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2318 		 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0,
2319 		 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2320 		 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4,
2321 		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
2322 		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
2323 		 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba,
2324 		 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2325 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2326 		 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0,
2327 		 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2328 		 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4,
2329 		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
2330 		 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
2331 		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2332 		 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2333 		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2334 		 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce,
2335 		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
2336 		 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2337 		 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4,
2338 		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2339 		 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2340 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
2341 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2342 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2343 		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2344 		 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
2345 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
2346 		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2347 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
2348 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2349 		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
2350 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2351 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
2352 		 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2353 		 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2354 		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2355 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2356 		 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1,
2357 		 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
2358 		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
2359 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
2360 		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2361 		 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9,
2362 		 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa,
2363 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2364 		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2365 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2366 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2367 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2368 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2369 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2370 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2371 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2372 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2373 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2374 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2375 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2376 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2377 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2378 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2379 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2380 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2381 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2382 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2383 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2384 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2385 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2386 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2387 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2388 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2389 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2390 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2391 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2392 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2393 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2394 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2395 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2396 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2397 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2398 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2399 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2400 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2401 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2402 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2403 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2404 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2405 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2406 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2407 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2408 		{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05,
2409 		 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11,
2410 		 0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a,
2411 		 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23,
2412 		 0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b,
2413 		 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33,
2414 		 0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39,
2415 		 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f,
2416 		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44,
2417 		 0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a,
2418 		 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d,
2419 		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2420 		 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58,
2421 		 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
2422 		 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f,
2423 		 0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63,
2424 		 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67,
2425 		 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
2426 		 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d,
2427 		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
2428 		 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73,
2429 		 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77,
2430 		 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79,
2431 		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c,
2432 		 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f,
2433 		 0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81,
2434 		 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84,
2435 		 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
2436 		 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a,
2437 		 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2438 		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f,
2439 		 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91,
2440 		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2441 		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2442 		 0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2443 		 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99,
2444 		 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b,
2445 		 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c,
2446 		 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e,
2447 		 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2448 		 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2,
2449 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2450 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
2451 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2452 		 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2453 		 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2454 		 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae,
2455 		 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf,
2456 		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2457 		 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2458 		 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
2459 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
2460 		 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2461 		 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2462 		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2463 		 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2464 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2465 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
2466 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2467 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
2468 		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2469 		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
2470 		 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
2471 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
2472 		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
2473 		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2474 		 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2475 		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2476 		 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
2477 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2478 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2479 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2480 		 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2481 		 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2482 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2483 		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2484 		 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
2485 		 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
2486 		 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2487 		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
2488 		 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
2489 		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2490 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2491 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
2492 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
2493 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2494 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2495 		 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2496 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2497 		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
2498 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef,
2499 		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2500 		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2501 		 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2502 		 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2503 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
2504 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2505 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
2506 		 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
2507 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb,
2508 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2509 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2510 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2511 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2512 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2513 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2514 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2515 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2516 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2517 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2518 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2519 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2520 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2521 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2522 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2523 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2524 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2525 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2526 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2527 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2528 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2529 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2530 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2531 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2532 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2533 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2534 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2535 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2536 		{0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08,
2537 		 0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14,
2538 		 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e,
2539 		 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27,
2540 		 0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f,
2541 		 0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37,
2542 		 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c,
2543 		 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43,
2544 		 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49,
2545 		 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d,
2546 		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2547 		 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58,
2548 		 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c,
2549 		 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2550 		 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65,
2551 		 0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68,
2552 		 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2553 		 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f,
2554 		 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73,
2555 		 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
2556 		 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a,
2557 		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2558 		 0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80,
2559 		 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82,
2560 		 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85,
2561 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
2562 		 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b,
2563 		 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2564 		 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90,
2565 		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2566 		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2567 		 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2568 		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2569 		 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2570 		 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2571 		 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2572 		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2573 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2574 		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2575 		 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2576 		 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2577 		 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2578 		 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2579 		 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
2580 		 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
2581 		 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
2582 		 0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4,
2583 		 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2584 		 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
2585 		 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
2586 		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2587 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2588 		 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2589 		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2590 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
2591 		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2592 		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2593 		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2594 		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2595 		 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2596 		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2597 		 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2598 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2599 		 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2600 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2601 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2602 		 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2603 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2604 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
2605 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2606 		 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2607 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2608 		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2609 		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
2610 		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2611 		 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
2612 		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2613 		 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6,
2614 		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2615 		 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2616 		 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
2617 		 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
2618 		 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2619 		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2620 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2621 		 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1,
2622 		 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2623 		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
2624 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2625 		 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7,
2626 		 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
2627 		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2628 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2629 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2630 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2631 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2632 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2633 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2634 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2635 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2636 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2637 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2638 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2639 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2640 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2641 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2642 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2643 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2644 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2645 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2646 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2647 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2648 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2649 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2650 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2651 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2652 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2653 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2654 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2655 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2656 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2657 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2658 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2659 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2660 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2661 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2662 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2663 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
2664 	    },
2665 	    {				/* gamma 3 - from tp6810 + cx0342 */
2666 		{0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15,
2667 		 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23,
2668 		 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f,
2669 		 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39,
2670 		 0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43,
2671 		 0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
2672 		 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53,
2673 		 0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a,
2674 		 0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
2675 		 0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67,
2676 		 0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d,
2677 		 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73,
2678 		 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78,
2679 		 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c,
2680 		 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81,
2681 		 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2682 		 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2683 		 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f,
2684 		 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93,
2685 		 0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97,
2686 		 0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2687 		 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
2688 		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
2689 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2690 		 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
2691 		 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
2692 		 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2693 		 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2694 		 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3,
2695 		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2696 		 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2697 		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2698 		 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2699 		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
2700 		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5,
2701 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
2702 		 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2703 		 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
2704 		 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce,
2705 		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2706 		 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3,
2707 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2708 		 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2709 		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda,
2710 		 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2711 		 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2712 		 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2713 		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2714 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4,
2715 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2716 		 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2717 		 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
2718 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2719 		 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
2720 		 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
2721 		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2722 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2723 		 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2724 		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2725 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2726 		 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2727 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
2728 		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2729 		 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
2730 		 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff,
2731 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2732 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2733 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2734 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2735 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2736 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2737 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2738 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2739 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2740 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2741 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2742 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2743 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2744 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2745 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2746 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2747 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2748 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2749 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2750 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2751 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2752 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2753 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2754 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2755 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2756 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2757 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2758 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2759 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2760 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2761 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2762 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2763 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2764 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2765 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2766 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2767 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2768 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2769 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2770 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2771 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2772 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2773 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2774 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2775 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2776 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2777 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2778 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2779 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2780 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2781 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2782 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2783 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2784 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2785 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2786 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2787 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2788 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2789 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2790 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2791 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2792 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2793 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2794 		{0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10,
2795 		 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b,
2796 		 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26,
2797 		 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f,
2798 		 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38,
2799 		 0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f,
2800 		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
2801 		 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b,
2802 		 0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52,
2803 		 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58,
2804 		 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c,
2805 		 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2806 		 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66,
2807 		 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69,
2808 		 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
2809 		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
2810 		 0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
2811 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
2812 		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2813 		 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80,
2814 		 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84,
2815 		 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86,
2816 		 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2817 		 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e,
2818 		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90,
2819 		 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2820 		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96,
2821 		 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98,
2822 		 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a,
2823 		 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
2824 		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e,
2825 		 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2826 		 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3,
2827 		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2828 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
2829 		 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
2830 		 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad,
2831 		 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2832 		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2833 		 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
2834 		 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4,
2835 		 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2836 		 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2837 		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2838 		 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2839 		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
2840 		 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
2841 		 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2842 		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2843 		 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2844 		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2845 		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2846 		 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2847 		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2848 		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2849 		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0,
2850 		 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2851 		 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
2852 		 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2853 		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
2854 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2855 		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2856 		 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2857 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2858 		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2859 		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2860 		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2,
2861 		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
2862 		 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
2863 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2864 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2865 		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2866 		 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2867 		 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec,
2868 		 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2869 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
2870 		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
2871 		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2872 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2873 		 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
2874 		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2875 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
2876 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
2877 		 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2878 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb,
2879 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc,
2880 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2881 		 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2882 		 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
2883 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2884 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2885 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2886 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2887 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2888 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2889 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2890 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2891 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2892 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2893 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2894 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2895 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2896 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2897 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2898 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2899 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2900 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2901 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2902 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2903 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2904 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2905 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2906 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2907 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2908 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2909 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2910 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2911 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2912 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2913 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2914 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2915 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2916 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2917 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2918 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2919 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2920 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2921 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2922 		{0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14,
2923 		 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
2924 		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d,
2925 		 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38,
2926 		 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40,
2927 		 0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49,
2928 		 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50,
2929 		 0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58,
2930 		 0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e,
2931 		 0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63,
2932 		 0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
2933 		 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e,
2934 		 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74,
2935 		 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79,
2936 		 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d,
2937 		 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81,
2938 		 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2939 		 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2940 		 0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f,
2941 		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
2942 		 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96,
2943 		 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
2944 		 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
2945 		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
2946 		 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
2947 		 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
2948 		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9,
2949 		 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac,
2950 		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2951 		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1,
2952 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
2953 		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2954 		 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2955 		 0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc,
2956 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
2957 		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
2958 		 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4,
2959 		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2960 		 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9,
2961 		 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb,
2962 		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2963 		 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf,
2964 		 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2965 		 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
2966 		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2967 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2968 		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
2969 		 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2970 		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2971 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2972 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2973 		 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2974 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2975 		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2976 		 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2977 		 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb,
2978 		 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2979 		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2980 		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2981 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2982 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
2983 		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2984 		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2985 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2986 		 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2987 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
2988 		 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2989 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd,
2990 		 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff,
2991 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2992 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2993 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2994 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2995 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2996 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2997 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2998 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2999 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3000 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3001 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3002 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3003 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3004 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3005 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3006 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3007 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3008 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3009 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3010 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3011 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3012 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3013 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3014 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3015 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3016 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3017 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3018 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3019 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3020 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3021 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3022 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3023 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3024 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3025 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3026 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3027 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3028 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3029 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3030 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3031 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3032 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3033 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3034 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3035 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3036 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3037 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3038 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3039 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3040 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3041 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3042 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3043 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3044 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3045 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3046 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3047 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3048 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3049 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
3050 	    },
3051 	    {				/* gamma 4 - from tp6800 + soi763a */
3052 		{0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f,
3053 		 0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d,
3054 		 0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a,
3055 		 0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45,
3056 		 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f,
3057 		 0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58,
3058 		 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60,
3059 		 0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67,
3060 		 0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e,
3061 		 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74,
3062 		 0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a,
3063 		 0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3064 		 0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86,
3065 		 0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b,
3066 		 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91,
3067 		 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96,
3068 		 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
3069 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3070 		 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2,
3071 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5,
3072 		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab,
3073 		 0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3074 		 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1,
3075 		 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4,
3076 		 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8,
3077 		 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc,
3078 		 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
3079 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
3080 		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3081 		 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9,
3082 		 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3083 		 0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce,
3084 		 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
3085 		 0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3086 		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3087 		 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
3088 		 0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
3089 		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf,
3090 		 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3091 		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3092 		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
3093 		 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
3094 		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3095 		 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3096 		 0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3097 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3098 		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
3099 		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3100 		 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3101 		 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
3102 		 0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
3103 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3104 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3105 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3106 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3107 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3108 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3109 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3110 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3111 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3112 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3113 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3114 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3115 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3116 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3117 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3118 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3119 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3120 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3121 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3122 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3123 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3124 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3125 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3126 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3127 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3128 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3129 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3130 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3131 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3132 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3133 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3134 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3135 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3136 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3137 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3138 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3139 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3140 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3141 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3142 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3143 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3144 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3145 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3146 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3147 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3148 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3149 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3150 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3151 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3152 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3153 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3154 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3155 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3156 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3157 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3158 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3159 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3160 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3161 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3162 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3163 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3164 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3165 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3166 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3167 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3168 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3169 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3170 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3171 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3172 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3173 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3174 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3175 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3176 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3177 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3178 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3179 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3180 		{0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15,
3181 		 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
3182 		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
3183 		 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35,
3184 		 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d,
3185 		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
3186 		 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c,
3187 		 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54,
3188 		 0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a,
3189 		 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
3190 		 0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65,
3191 		 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
3192 		 0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
3193 		 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73,
3194 		 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77,
3195 		 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b,
3196 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
3197 		 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82,
3198 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86,
3199 		 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
3200 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
3201 		 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91,
3202 		 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94,
3203 		 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3204 		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a,
3205 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
3206 		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
3207 		 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3208 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4,
3209 		 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6,
3210 		 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
3211 		 0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad,
3212 		 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
3213 		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3214 		 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
3215 		 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
3216 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8,
3217 		 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3218 		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
3219 		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3220 		 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
3221 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3222 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3223 		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3224 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9,
3225 		 0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3226 		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd,
3227 		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3228 		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3229 		 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3,
3230 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3231 		 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3232 		 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3233 		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
3234 		 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
3235 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3236 		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
3237 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
3238 		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
3239 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
3240 		 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3241 		 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
3242 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
3243 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
3244 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3245 		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3246 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3247 		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3248 		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3249 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
3250 		 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3251 		 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3252 		 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3253 		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3254 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3255 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3256 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3257 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3258 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3259 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3260 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3261 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3262 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3263 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3264 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3265 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3266 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3267 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3268 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3269 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3270 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3271 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3272 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3273 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3274 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3275 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3276 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3277 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3278 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3279 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3280 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3281 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3282 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3283 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3284 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3285 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3286 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3287 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3288 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3289 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3290 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3291 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3292 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3293 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3294 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3295 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3296 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3297 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3298 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3299 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3300 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3301 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3302 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3303 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3304 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3305 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3306 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3307 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3308 		{0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b,
3309 		 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28,
3310 		 0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34,
3311 		 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
3312 		 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48,
3313 		 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50,
3314 		 0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58,
3315 		 0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f,
3316 		 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65,
3317 		 0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c,
3318 		 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3319 		 0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77,
3320 		 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
3321 		 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3322 		 0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85,
3323 		 0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a,
3324 		 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f,
3325 		 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92,
3326 		 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97,
3327 		 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3328 		 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
3329 		 0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
3330 		 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3331 		 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
3332 		 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
3333 		 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
3334 		 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3335 		 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
3336 		 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
3337 		 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba,
3338 		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3339 		 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
3340 		 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3,
3341 		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3342 		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
3343 		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3344 		 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc,
3345 		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3346 		 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0,
3347 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3348 		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
3349 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8,
3350 		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
3351 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
3352 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf,
3353 		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3354 		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3355 		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3356 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
3357 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8,
3358 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
3359 		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
3360 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
3361 		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3362 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3363 		 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
3364 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
3365 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8,
3366 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
3367 		 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3368 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3369 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3370 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3371 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3372 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3373 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3374 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3375 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3376 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3377 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3378 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3379 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3380 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3381 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3382 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3383 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3384 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3385 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3386 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3387 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3388 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3389 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3390 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3391 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3392 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3393 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3394 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3395 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3396 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3397 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3398 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3399 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3400 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3401 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3402 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3403 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3404 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3405 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3406 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3407 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3408 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3409 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3410 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3411 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3412 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3413 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3414 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3415 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3416 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3417 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3418 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3419 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3420 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3421 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3422 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3423 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3424 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3425 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3426 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3427 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3428 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3429 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3430 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3431 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3432 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3433 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3434 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3435 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
3436 	    },
3437 	    {							/* gamma 5 */
3438 		{0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21,
3439 		 0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c,
3440 		 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36,
3441 		 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3442 		 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3443 		 0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
3444 		 0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55,
3445 		 0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b,
3446 		 0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
3447 		 0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66,
3448 		 0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b,
3449 		 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3450 		 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75,
3451 		 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79,
3452 		 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e,
3453 		 0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82,
3454 		 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85,
3455 		 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89,
3456 		 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d,
3457 		 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90,
3458 		 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94,
3459 		 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97,
3460 		 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3461 		 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3462 		 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0,
3463 		 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
3464 		 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
3465 		 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8,
3466 		 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3467 		 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3468 		 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3469 		 0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3,
3470 		 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5,
3471 		 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3472 		 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3473 		 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc,
3474 		 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
3475 		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1,
3476 		 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3477 		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3478 		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7,
3479 		 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9,
3480 		 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3481 		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
3482 		 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf,
3483 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3484 		 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3,
3485 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5,
3486 		 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3487 		 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
3488 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
3489 		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd,
3490 		 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde,
3491 		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
3492 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3493 		 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
3494 		 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3495 		 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7,
3496 		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3497 		 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb,
3498 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3499 		 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3500 		 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3501 		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
3502 		 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3,
3503 		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
3504 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
3505 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3506 		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3507 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3508 		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3509 		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3510 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3511 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3512 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3513 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3514 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3515 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3516 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3517 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3518 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3519 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3520 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3521 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3522 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3523 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3524 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3525 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3526 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3527 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3528 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3529 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3530 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3531 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3532 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3533 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3534 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3535 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3536 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3537 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3538 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3539 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3540 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3541 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3542 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3543 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3544 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3545 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3546 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3547 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3548 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3549 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3550 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3551 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3552 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3553 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3554 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3555 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3556 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3557 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3558 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3559 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3560 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3561 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3562 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3563 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3564 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3565 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3566 		{0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19,
3567 		 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
3568 		 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
3569 		 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32,
3570 		 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39,
3571 		 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f,
3572 		 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45,
3573 		 0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b,
3574 		 0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50,
3575 		 0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54,
3576 		 0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59,
3577 		 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d,
3578 		 0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
3579 		 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65,
3580 		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68,
3581 		 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c,
3582 		 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f,
3583 		 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72,
3584 		 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75,
3585 		 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78,
3586 		 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
3587 		 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e,
3588 		 0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81,
3589 		 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83,
3590 		 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86,
3591 		 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88,
3592 		 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b,
3593 		 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d,
3594 		 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f,
3595 		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
3596 		 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
3597 		 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96,
3598 		 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98,
3599 		 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3600 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
3601 		 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e,
3602 		 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0,
3603 		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3604 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
3605 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
3606 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7,
3607 		 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9,
3608 		 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3609 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
3610 		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
3611 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3612 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
3613 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3614 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5,
3615 		 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
3616 		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
3617 		 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3618 		 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
3619 		 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3620 		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3621 		 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
3622 		 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
3623 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3624 		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
3625 		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
3626 		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
3627 		 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9,
3628 		 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca,
3629 		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
3630 		 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd,
3631 		 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
3632 		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3633 		 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
3634 		 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3635 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3636 		 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
3637 		 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3638 		 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3639 		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
3640 		 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb,
3641 		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3642 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde,
3643 		 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf,
3644 		 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
3645 		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3646 		 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
3647 		 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3648 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
3649 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3650 		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3651 		 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea,
3652 		 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
3653 		 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
3654 		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
3655 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3656 		 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
3657 		 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
3658 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
3659 		 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3660 		 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3661 		 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3662 		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa,
3663 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3664 		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3665 		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3666 		 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3667 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3668 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3669 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3670 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3671 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3672 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3673 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3674 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3675 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3676 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3677 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3678 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3679 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3680 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3681 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3682 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3683 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3684 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3685 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3686 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3687 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3688 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3689 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3690 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3691 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3692 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3693 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3694 		{0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e,
3695 		 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28,
3696 		 0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
3697 		 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
3698 		 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
3699 		 0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48,
3700 		 0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e,
3701 		 0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54,
3702 		 0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59,
3703 		 0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f,
3704 		 0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63,
3705 		 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
3706 		 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c,
3707 		 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3708 		 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74,
3709 		 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78,
3710 		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c,
3711 		 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
3712 		 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83,
3713 		 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
3714 		 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89,
3715 		 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c,
3716 		 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
3717 		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
3718 		 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95,
3719 		 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3720 		 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3721 		 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d,
3722 		 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f,
3723 		 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2,
3724 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3725 		 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6,
3726 		 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9,
3727 		 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3728 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad,
3729 		 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf,
3730 		 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
3731 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3732 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5,
3733 		 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3734 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
3735 		 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb,
3736 		 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
3737 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
3738 		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1,
3739 		 0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3740 		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3741 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3742 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8,
3743 		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3744 		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
3745 		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
3746 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
3747 		 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3748 		 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3749 		 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
3750 		 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6,
3751 		 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
3752 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
3753 		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
3754 		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3755 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3756 		 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
3757 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
3758 		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3759 		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
3760 		 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6,
3761 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3762 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3763 		 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea,
3764 		 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3765 		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3766 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3767 		 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3768 		 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2,
3769 		 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
3770 		 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3771 		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
3772 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3773 		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
3774 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
3775 		 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
3776 		 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe,
3777 		 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3778 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3779 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3780 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3781 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3782 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3783 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3784 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3785 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3786 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3787 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3788 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3789 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3790 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3791 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3792 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3793 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3794 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3795 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3796 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3797 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3798 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3799 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3800 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3801 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3802 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3803 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3804 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3805 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3806 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3807 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3808 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3809 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3810 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3811 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3812 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3813 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3814 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3815 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3816 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3817 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3818 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3819 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3820 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3821 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3822 	    },
3823 	};
3824 
3825 	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3826 	if (sd->bridge == BRIDGE_TP6810)
3827 		reg_w(gspca_dev, 0x02, 0x28);
3828 /*	msleep(50); */
3829 	bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024);
3830 	bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024);
3831 	bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024);
3832 	if (sd->bridge == BRIDGE_TP6810) {
3833 		int i;
3834 
3835 		reg_w(gspca_dev, 0x02, 0x2b);
3836 		reg_w(gspca_dev, 0x02, 0x28);
3837 		for (i = 0; i < 6; i++)
3838 			reg_w(gspca_dev, TP6800_R55_GAMMA_R,
3839 				gamma_tb[gamma][0][i]);
3840 		reg_w(gspca_dev, 0x02, 0x2b);
3841 		reg_w(gspca_dev, 0x02, 0x28);
3842 		for (i = 0; i < 6; i++)
3843 			reg_w(gspca_dev, TP6800_R56_GAMMA_G,
3844 				gamma_tb[gamma][1][i]);
3845 		reg_w(gspca_dev, 0x02, 0x2b);
3846 		reg_w(gspca_dev, 0x02, 0x28);
3847 		for (i = 0; i < 6; i++)
3848 			reg_w(gspca_dev, TP6800_R57_GAMMA_B,
3849 				gamma_tb[gamma][2][i]);
3850 		reg_w(gspca_dev, 0x02, 0x28);
3851 	}
3852 	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3853 /*	msleep(50); */
3854 }
3855 
3856 static void setsharpness(struct gspca_dev *gspca_dev, s32 val)
3857 {
3858 	struct sd *sd = (struct sd *) gspca_dev;
3859 
3860 	if (sd->bridge == BRIDGE_TP6800) {
3861 		val |= 0x08;		/* grid compensation enable */
3862 		if (gspca_dev->pixfmt.width == 640)
3863 			reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
3864 		else
3865 			val |= 0x04;		/* scaling down enable */
3866 		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val);
3867 	} else {
3868 		val = (val << 5) | 0x08;
3869 		reg_w(gspca_dev, 0x59, val);
3870 	}
3871 }
3872 
3873 static void setautogain(struct gspca_dev *gspca_dev, s32 val)
3874 {
3875 	struct sd *sd = (struct sd *) gspca_dev;
3876 
3877 	sd->ag_cnt = val ? AG_CNT_START : -1;
3878 }
3879 
3880 /* set the resolution for sensor cx0342 */
3881 static void set_resolution(struct gspca_dev *gspca_dev)
3882 {
3883 	struct sd *sd = (struct sd *) gspca_dev;
3884 
3885 	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3886 	if (gspca_dev->pixfmt.width == 320) {
3887 		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06);
3888 		msleep(100);
3889 		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3890 		msleep(100);
3891 		reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3892 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
3893 		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d);
3894 		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37);
3895 		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01);
3896 	} else {
3897 		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05);
3898 		msleep(100);
3899 		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3900 		msleep(100);
3901 		reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3902 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
3903 		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09);
3904 		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf);
3905 		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
3906 	}
3907 	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
3908 	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
3909 				ARRAY_SIZE(color_gain[0]));
3910 	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
3911 	if (sd->sensor == SENSOR_SOI763A)
3912 		setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual));
3913 }
3914 
3915 /* convert the frame rate to a tp68x0 value */
3916 static int get_fr_idx(struct gspca_dev *gspca_dev)
3917 {
3918 	struct sd *sd = (struct sd *) gspca_dev;
3919 	int i;
3920 
3921 	if (sd->bridge == BRIDGE_TP6800) {
3922 		for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) {
3923 			if (sd->framerate >= rates[i])
3924 				break;
3925 		}
3926 		i = 6 - i;		/* 1 = 5fps .. 6 = 30fps */
3927 
3928 		/* 640x480 * 30 fps does not work */
3929 		if (i == 6			/* if 30 fps */
3930 		 && gspca_dev->pixfmt.width == 640)
3931 			i = 0x05;		/* 15 fps */
3932 	} else {
3933 		for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) {
3934 			if (sd->framerate >= rates_6810[i])
3935 				break;
3936 		}
3937 		i = 7 - i;		/* 3 = 5fps .. 7 = 30fps */
3938 
3939 		/* 640x480 * 30 fps does not work */
3940 		if (i == 7			/* if 30 fps */
3941 		 && gspca_dev->pixfmt.width == 640)
3942 			i = 6;			/* 15 fps */
3943 		i |= 0x80;			/* clock * 1 */
3944 	}
3945 	return i;
3946 }
3947 
3948 static void setframerate(struct gspca_dev *gspca_dev, s32 val)
3949 {
3950 	struct sd *sd = (struct sd *) gspca_dev;
3951 	u8 fr_idx;
3952 
3953 	fr_idx = get_fr_idx(gspca_dev);
3954 
3955 	if (sd->bridge == BRIDGE_TP6810) {
3956 		reg_r(gspca_dev, 0x7b);
3957 		reg_w(gspca_dev, 0x7b,
3958 			sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90);
3959 		if (val >= 128)
3960 			fr_idx = 0xf0;		/* lower frame rate */
3961 	}
3962 
3963 	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx);
3964 
3965 	if (sd->sensor == SENSOR_CX0342)
3966 		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3967 }
3968 
3969 static void setrgain(struct gspca_dev *gspca_dev, s32 rgain)
3970 {
3971 	i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8);
3972 	i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain);
3973 	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
3974 }
3975 
3976 static int sd_setgain(struct gspca_dev *gspca_dev)
3977 {
3978 	struct sd *sd = (struct sd *) gspca_dev;
3979 	s32 val = gspca_dev->gain->val;
3980 
3981 	if (sd->sensor == SENSOR_CX0342) {
3982 		s32 old = gspca_dev->gain->cur.val ?
3983 					gspca_dev->gain->cur.val : 1;
3984 
3985 		sd->blue->val = sd->blue->val * val / old;
3986 		if (sd->blue->val > 4095)
3987 			sd->blue->val = 4095;
3988 		sd->red->val = sd->red->val * val / old;
3989 		if (sd->red->val > 4095)
3990 			sd->red->val = 4095;
3991 	}
3992 	if (gspca_dev->streaming) {
3993 		if (sd->sensor == SENSOR_CX0342)
3994 			setexposure(gspca_dev, gspca_dev->exposure->val,
3995 					gspca_dev->gain->val,
3996 					sd->blue->val, sd->red->val);
3997 		else
3998 			setexposure(gspca_dev, gspca_dev->exposure->val,
3999 					gspca_dev->gain->val, 0, 0);
4000 	}
4001 	return gspca_dev->usb_err;
4002 }
4003 
4004 static void setbgain(struct gspca_dev *gspca_dev, s32 bgain)
4005 {
4006 	i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8);
4007 	i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain);
4008 	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
4009 }
4010 
4011 /* this function is called at probe time */
4012 static int sd_config(struct gspca_dev *gspca_dev,
4013 		     const struct usb_device_id *id)
4014 {
4015 	struct sd *sd = (struct sd *) gspca_dev;
4016 
4017 	sd->bridge = id->driver_info;
4018 
4019 	gspca_dev->cam.cam_mode = vga_mode;
4020 	gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
4021 	gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ?
4022 			framerates : framerates_6810;
4023 
4024 	sd->framerate = DEFAULT_FRAME_RATE;
4025 	return 0;
4026 }
4027 
4028 /* this function is called at probe and resume time */
4029 static int sd_init(struct gspca_dev *gspca_dev)
4030 {
4031 	struct sd *sd = (struct sd *) gspca_dev;
4032 	static const struct cmd tp6800_preinit[] = {
4033 		{TP6800_R10_SIF_TYPE, 0x01},	/* sif */
4034 		{TP6800_R11_SIF_CONTROL, 0x01},
4035 		{TP6800_R15_GPIO_PU, 0x9f},
4036 		{TP6800_R16_GPIO_PD, 0x9f},
4037 		{TP6800_R17_GPIO_IO, 0x80},
4038 		{TP6800_R18_GPIO_DATA, 0x40},	/* LED off */
4039 	};
4040 	static const struct cmd tp6810_preinit[] = {
4041 		{TP6800_R2F_TIMING_CFG, 0x2f},
4042 		{TP6800_R15_GPIO_PU, 0x6f},
4043 		{TP6800_R16_GPIO_PD, 0x40},
4044 		{TP6800_R17_GPIO_IO, 0x9f},
4045 		{TP6800_R18_GPIO_DATA, 0xc1},	/* LED off */
4046 	};
4047 
4048 	if (sd->bridge == BRIDGE_TP6800)
4049 		reg_w_buf(gspca_dev, tp6800_preinit,
4050 				ARRAY_SIZE(tp6800_preinit));
4051 	else
4052 		reg_w_buf(gspca_dev, tp6810_preinit,
4053 				ARRAY_SIZE(tp6810_preinit));
4054 	msleep(15);
4055 	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4056 	gspca_dbg(gspca_dev, D_PROBE, "gpio: %02x\n", gspca_dev->usb_buf[0]);
4057 /* values:
4058  *	0x80: snapshot button
4059  *	0x40: LED
4060  *	0x20: (bridge / sensor) reset for tp6810 ?
4061  *	0x07: sensor type ?
4062  */
4063 
4064 	/* guess the sensor type */
4065 	if (force_sensor >= 0) {
4066 		sd->sensor = force_sensor;
4067 	} else {
4068 		if (sd->bridge == BRIDGE_TP6800) {
4069 /*fixme: not sure this is working*/
4070 			switch (gspca_dev->usb_buf[0] & 0x07) {
4071 			case 0:
4072 				sd->sensor = SENSOR_SOI763A;
4073 				break;
4074 			case 1:
4075 				sd->sensor = SENSOR_CX0342;
4076 				break;
4077 			}
4078 		} else {
4079 			int sensor;
4080 
4081 			sensor = probe_6810(gspca_dev);
4082 			if (sensor < 0) {
4083 				pr_warn("Unknown sensor %d - forced to soi763a\n",
4084 					-sensor);
4085 				sensor = SENSOR_SOI763A;
4086 			}
4087 			sd->sensor = sensor;
4088 		}
4089 	}
4090 	if (sd->sensor == SENSOR_SOI763A) {
4091 		pr_info("Sensor soi763a\n");
4092 		if (sd->bridge == BRIDGE_TP6810) {
4093 			soi763a_6810_init(gspca_dev);
4094 		}
4095 	} else {
4096 		pr_info("Sensor cx0342\n");
4097 		if (sd->bridge == BRIDGE_TP6810) {
4098 			cx0342_6810_init(gspca_dev);
4099 		}
4100 	}
4101 
4102 	set_dqt(gspca_dev, 0);
4103 	return 0;
4104 }
4105 
4106 /* This function is called before choosing the alt setting */
4107 static int sd_isoc_init(struct gspca_dev *gspca_dev)
4108 {
4109 	struct sd *sd = (struct sd *) gspca_dev;
4110 	static const struct cmd cx_sensor_init[] = {
4111 		{CX0342_AUTO_ADC_CALIB, 0x81},
4112 		{CX0342_EXPO_LINE_L, 0x37},
4113 		{CX0342_EXPO_LINE_H, 0x01},
4114 		{CX0342_RAW_GRGAIN_L, 0x00},
4115 		{CX0342_RAW_GBGAIN_L, 0x00},
4116 		{CX0342_RAW_RGAIN_L, 0x00},
4117 		{CX0342_RAW_BGAIN_L, 0x00},
4118 		{CX0342_SYS_CTRL_0, 0x81},
4119 	};
4120 	static const struct cmd cx_bridge_init[] = {
4121 		{0x4d, 0x00},
4122 		{0x4c, 0xff},
4123 		{0x4e, 0xff},
4124 		{0x4f, 0x00},
4125 	};
4126 	static const struct cmd ov_sensor_init[] = {
4127 		{0x10, 0x75},		/* exposure */
4128 		{0x76, 0x03},
4129 		{0x00, 0x00},		/* gain */
4130 	};
4131 	static const struct cmd ov_bridge_init[] = {
4132 		{0x7b, 0x90},
4133 		{TP6800_R3F_FRAME_RATE, 0x87},
4134 	};
4135 
4136 	if (sd->bridge == BRIDGE_TP6800)
4137 		return 0;
4138 	if (sd->sensor == SENSOR_CX0342) {
4139 		reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);
4140 		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4141 		i2c_w_buf(gspca_dev, cx_sensor_init,
4142 				ARRAY_SIZE(cx_sensor_init));
4143 		reg_w_buf(gspca_dev, cx_bridge_init,
4144 				ARRAY_SIZE(cx_bridge_init));
4145 		bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4146 		reg_w(gspca_dev, 0x59, 0x40);
4147 	} else {
4148 		reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);
4149 		i2c_w_buf(gspca_dev, ov_sensor_init,
4150 				ARRAY_SIZE(ov_sensor_init));
4151 		reg_r(gspca_dev, 0x7b);
4152 		reg_w_buf(gspca_dev, ov_bridge_init,
4153 				ARRAY_SIZE(ov_bridge_init));
4154 	}
4155 	reg_w(gspca_dev, TP6800_R78_FORMAT,
4156 			gspca_dev->curr_mode ? 0x00 : 0x01);
4157 	return gspca_dev->usb_err;
4158 }
4159 
4160 static void set_led(struct gspca_dev *gspca_dev, int on)
4161 {
4162 	u8 data;
4163 
4164 	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4165 	data = gspca_dev->usb_buf[0];
4166 	if (on)
4167 		data &= ~0x40;
4168 	else
4169 		data |= 0x40;
4170 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data);
4171 }
4172 
4173 static void cx0342_6800_start(struct gspca_dev *gspca_dev)
4174 {
4175 	struct sd *sd = (struct sd *) gspca_dev;
4176 	static const struct cmd reg_init[] = {
4177 		/* fixme: is this useful? */
4178 		{TP6800_R17_GPIO_IO, 0x9f},
4179 		{TP6800_R16_GPIO_PD, 0x40},
4180 		{TP6800_R10_SIF_TYPE, 0x00},	/* i2c 8 bits */
4181 		{TP6800_R50, 0x00},
4182 		{TP6800_R51, 0x00},
4183 		{TP6800_R52, 0xff},
4184 		{TP6800_R53, 0x03},
4185 		{TP6800_R54_DARK_CFG, 0x07},
4186 		{TP6800_R5C_EDGE_THRLD, 0x40},
4187 		{TP6800_R7A_BLK_THRLD, 0x40},
4188 		{TP6800_R2F_TIMING_CFG, 0x17},
4189 		{TP6800_R30_SENSOR_CFG, 0x18},	/* G1B..RG0 */
4190 		{TP6800_R37_FRONT_DARK_ST, 0x00},
4191 		{TP6800_R38_FRONT_DARK_END, 0x00},
4192 		{TP6800_R39_REAR_DARK_ST_L, 0x00},
4193 		{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4194 		{TP6800_R3B_REAR_DARK_END_L, 0x00},
4195 		{TP6800_R3C_REAR_DARK_END_H, 0x00},
4196 		{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4197 		{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4198 		{TP6800_R21_ENDP_1_CTL, 0x03},
4199 
4200 		{TP6800_R31_PIXEL_START, 0x0b},
4201 		{TP6800_R32_PIXEL_END_L, 0x8a},
4202 		{TP6800_R33_PIXEL_END_H, 0x02},
4203 		{TP6800_R34_LINE_START, 0x0e},
4204 		{TP6800_R35_LINE_END_L, 0xf4},
4205 		{TP6800_R36_LINE_END_H, 0x01},
4206 		{TP6800_R78_FORMAT, 0x00},
4207 		{TP6800_R12_SIF_ADDR_S, 0x20},	/* cx0342 i2c addr */
4208 	};
4209 	static const struct cmd sensor_init[] = {
4210 		{CX0342_OUTPUT_CTRL, 0x07},
4211 		{CX0342_BYPASS_MODE, 0x58},
4212 		{CX0342_GPXLTHD_L, 0x16},
4213 		{CX0342_RBPXLTHD_L, 0x16},
4214 		{CX0342_PLANETHD_L, 0xc0},
4215 		{CX0342_PLANETHD_H, 0x03},
4216 		{CX0342_RB_GAP_L, 0xff},
4217 		{CX0342_RB_GAP_H, 0x07},
4218 		{CX0342_G_GAP_L, 0xff},
4219 		{CX0342_G_GAP_H, 0x07},
4220 		{CX0342_RST_OVERFLOW_L, 0x5c},
4221 		{CX0342_RST_OVERFLOW_H, 0x01},
4222 		{CX0342_DATA_OVERFLOW_L, 0xfc},
4223 		{CX0342_DATA_OVERFLOW_H, 0x03},
4224 		{CX0342_DATA_UNDERFLOW_L, 0x00},
4225 		{CX0342_DATA_UNDERFLOW_H, 0x00},
4226 		{CX0342_SYS_CTRL_0, 0x40},
4227 		{CX0342_GLOBAL_GAIN, 0x01},
4228 		{CX0342_CLOCK_GEN, 0x00},
4229 		{CX0342_SYS_CTRL_0, 0x02},
4230 		{CX0342_IDLE_CTRL, 0x05},
4231 		{CX0342_ADCGN, 0x00},
4232 		{CX0342_ADC_CTL, 0x00},
4233 		{CX0342_LVRST_BLBIAS, 0x01},
4234 		{CX0342_VTHSEL, 0x0b},
4235 		{CX0342_RAMP_RIV, 0x0b},
4236 		{CX0342_LDOSEL, 0x07},
4237 		{CX0342_SPV_VALUE_L, 0x40},
4238 		{CX0342_SPV_VALUE_H, 0x02},
4239 	};
4240 
4241 	reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4242 	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4243 	i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
4244 	reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4245 	reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4246 	i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
4247 	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
4248 	if (sd->sensor == SENSOR_CX0342)
4249 		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4250 			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4251 			v4l2_ctrl_g_ctrl(sd->blue),
4252 			v4l2_ctrl_g_ctrl(sd->red));
4253 	else
4254 		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4255 			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4256 	set_led(gspca_dev, 1);
4257 	set_resolution(gspca_dev);
4258 }
4259 
4260 static void cx0342_6810_start(struct gspca_dev *gspca_dev)
4261 {
4262 	struct sd *sd = (struct sd *) gspca_dev;
4263 	static const struct cmd sensor_init_2[] = {
4264 		{CX0342_EXPO_LINE_L, 0x6f},
4265 		{CX0342_EXPO_LINE_H, 0x02},
4266 		{CX0342_RAW_GRGAIN_L, 0x00},
4267 		{CX0342_RAW_GBGAIN_L, 0x00},
4268 		{CX0342_RAW_RGAIN_L, 0x00},
4269 		{CX0342_RAW_BGAIN_L, 0x00},
4270 		{CX0342_SYS_CTRL_0, 0x81},
4271 	};
4272 	static const struct cmd bridge_init_2[] = {
4273 		{0x4d, 0x00},
4274 		{0x4c, 0xff},
4275 		{0x4e, 0xff},
4276 		{0x4f, 0x00},
4277 		{TP6800_R7A_BLK_THRLD, 0x00},
4278 		{TP6800_R79_QUALITY, 0x04},
4279 		{TP6800_R79_QUALITY, 0x01},
4280 	};
4281 	static const struct cmd bridge_init_3[] = {
4282 		{TP6800_R31_PIXEL_START, 0x08},
4283 		{TP6800_R32_PIXEL_END_L, 0x87},
4284 		{TP6800_R33_PIXEL_END_H, 0x02},
4285 		{TP6800_R34_LINE_START, 0x0e},
4286 		{TP6800_R35_LINE_END_L, 0xf4},
4287 		{TP6800_R36_LINE_END_H, 0x01},
4288 	};
4289 	static const struct cmd sensor_init_3[] = {
4290 		{CX0342_AUTO_ADC_CALIB, 0x81},
4291 		{CX0342_EXPO_LINE_L, 0x6f},
4292 		{CX0342_EXPO_LINE_H, 0x02},
4293 		{CX0342_RAW_GRGAIN_L, 0x00},
4294 		{CX0342_RAW_GBGAIN_L, 0x00},
4295 		{CX0342_RAW_RGAIN_L, 0x00},
4296 		{CX0342_RAW_BGAIN_L, 0x00},
4297 		{CX0342_SYS_CTRL_0, 0x81},
4298 	};
4299 	static const struct cmd bridge_init_5[] = {
4300 		{0x4d, 0x00},
4301 		{0x4c, 0xff},
4302 		{0x4e, 0xff},
4303 		{0x4f, 0x00},
4304 	};
4305 	static const struct cmd sensor_init_4[] = {
4306 		{CX0342_EXPO_LINE_L, 0xd3},
4307 		{CX0342_EXPO_LINE_H, 0x01},
4308 /*fixme: gains, but 00..80 only*/
4309 		{CX0342_RAW_GRGAIN_L, 0x40},
4310 		{CX0342_RAW_GBGAIN_L, 0x40},
4311 		{CX0342_RAW_RGAIN_L, 0x40},
4312 		{CX0342_RAW_BGAIN_L, 0x40},
4313 		{CX0342_SYS_CTRL_0, 0x81},
4314 	};
4315 	static const struct cmd sensor_init_5[] = {
4316 		{CX0342_IDLE_CTRL, 0x05},
4317 		{CX0342_ADCGN, 0x00},
4318 		{CX0342_ADC_CTL, 0x00},
4319 		{CX0342_LVRST_BLBIAS, 0x01},
4320 		{CX0342_VTHSEL, 0x0b},
4321 		{CX0342_RAMP_RIV, 0x0b},
4322 		{CX0342_LDOSEL, 0x07},
4323 		{CX0342_SPV_VALUE_L, 0x40},
4324 		{CX0342_SPV_VALUE_H, 0x02},
4325 		{CX0342_AUTO_ADC_CALIB, 0x81},
4326 	};
4327 
4328 	reg_w(gspca_dev, 0x22, gspca_dev->alt);
4329 	i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2));
4330 	reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4331 	reg_w_buf(gspca_dev, tp6810_cx_init_common,
4332 			ARRAY_SIZE(tp6810_cx_init_common));
4333 	reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4334 	if (gspca_dev->curr_mode) {
4335 		reg_w(gspca_dev, 0x4a, 0x7f);
4336 		reg_w(gspca_dev, 0x07, 0x05);
4337 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
4338 	} else {
4339 		reg_w(gspca_dev, 0x4a, 0xff);
4340 		reg_w(gspca_dev, 0x07, 0x85);
4341 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
4342 	}
4343 	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4344 	reg_w_buf(gspca_dev, tp6810_bridge_start,
4345 			ARRAY_SIZE(tp6810_bridge_start));
4346 	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4347 	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
4348 				ARRAY_SIZE(color_gain[0]));
4349 	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4350 	i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3));
4351 	reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4352 	i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4));
4353 	reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4354 	i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5));
4355 
4356 	set_led(gspca_dev, 1);
4357 /*	setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); */
4358 }
4359 
4360 static void soi763a_6800_start(struct gspca_dev *gspca_dev)
4361 {
4362 	struct sd *sd = (struct sd *) gspca_dev;
4363 	static const struct cmd reg_init[] = {
4364 		{TP6800_R79_QUALITY, 0x04},
4365 		{TP6800_R79_QUALITY, 0x01},
4366 		{TP6800_R10_SIF_TYPE, 0x00},	/* i2c 8 bits */
4367 
4368 		{TP6800_R50, 0x00},
4369 		{TP6800_R51, 0x00},
4370 		{TP6800_R52, 0xff},
4371 		{TP6800_R53, 0x03},
4372 		{TP6800_R54_DARK_CFG, 0x07},
4373 		{TP6800_R5C_EDGE_THRLD, 0x40},
4374 
4375 		{TP6800_R79_QUALITY, 0x03},
4376 		{TP6800_R7A_BLK_THRLD, 0x40},
4377 
4378 		{TP6800_R2F_TIMING_CFG, 0x46},
4379 		{TP6800_R30_SENSOR_CFG, 0x10},	/* BG1..G0R */
4380 		{TP6800_R37_FRONT_DARK_ST, 0x00},
4381 		{TP6800_R38_FRONT_DARK_END, 0x00},
4382 		{TP6800_R39_REAR_DARK_ST_L, 0x00},
4383 		{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4384 		{TP6800_R3B_REAR_DARK_END_L, 0x00},
4385 		{TP6800_R3C_REAR_DARK_END_H, 0x00},
4386 		{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4387 		{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4388 		{TP6800_R21_ENDP_1_CTL, 0x03},
4389 
4390 		{TP6800_R3F_FRAME_RATE, 0x04},	/* 15 fps */
4391 		{TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */
4392 
4393 		{TP6800_R31_PIXEL_START, 0x1b},
4394 		{TP6800_R32_PIXEL_END_L, 0x9a},
4395 		{TP6800_R33_PIXEL_END_H, 0x02},
4396 		{TP6800_R34_LINE_START, 0x0f},
4397 		{TP6800_R35_LINE_END_L, 0xf4},
4398 		{TP6800_R36_LINE_END_H, 0x01},
4399 		{TP6800_R78_FORMAT, 0x01},	/* qvga */
4400 		{TP6800_R12_SIF_ADDR_S, 0x21},	/* soi763a i2c addr */
4401 		{TP6800_R1A_SIF_TX_DATA2, 0x00},
4402 	};
4403 	static const struct cmd sensor_init[] = {
4404 		{0x12, 0x48},		/* mirror - RGB */
4405 		{0x13, 0xa0},		/* clock - no AGC nor AEC */
4406 		{0x03, 0xa4},		/* saturation */
4407 		{0x04, 0x30},		/* hue */
4408 		{0x05, 0x88},		/* contrast */
4409 		{0x06, 0x60},		/* brightness */
4410 		{0x10, 0x41},		/* AEC */
4411 		{0x11, 0x40},		/* clock rate */
4412 		{0x13, 0xa0},
4413 		{0x14, 0x00},		/* 640x480 */
4414 		{0x15, 0x14},
4415 		{0x1f, 0x41},
4416 		{0x20, 0x80},
4417 		{0x23, 0xee},
4418 		{0x24, 0x50},
4419 		{0x25, 0x7a},
4420 		{0x26, 0x00},
4421 		{0x27, 0xe2},
4422 		{0x28, 0xb0},
4423 		{0x2a, 0x00},
4424 		{0x2b, 0x00},
4425 		{0x2d, 0x81},
4426 		{0x2f, 0x9d},
4427 		{0x60, 0x80},
4428 		{0x61, 0x00},
4429 		{0x62, 0x88},
4430 		{0x63, 0x11},
4431 		{0x64, 0x89},
4432 		{0x65, 0x00},
4433 		{0x67, 0x94},
4434 		{0x68, 0x7a},
4435 		{0x69, 0x0f},
4436 		{0x6c, 0x80},
4437 		{0x6d, 0x80},
4438 		{0x6e, 0x80},
4439 		{0x6f, 0xff},
4440 		{0x71, 0x20},
4441 		{0x74, 0x20},
4442 		{0x75, 0x86},
4443 		{0x77, 0xb5},
4444 		{0x17, 0x18},		/* H href start */
4445 		{0x18, 0xbf},		/* H href end */
4446 		{0x19, 0x03},		/* V start */
4447 		{0x1a, 0xf8},		/* V end */
4448 		{0x01, 0x80},		/* blue gain */
4449 		{0x02, 0x80},		/* red gain */
4450 	};
4451 
4452 	reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4453 
4454 	i2c_w(gspca_dev, 0x12, 0x80);		/* sensor reset */
4455 	msleep(10);
4456 
4457 	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4458 
4459 	reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4460 	reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4461 
4462 	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4463 
4464 	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4465 				ARRAY_SIZE(color_gain[0]));
4466 
4467 	set_led(gspca_dev, 1);
4468 	if (sd->sensor == SENSOR_CX0342)
4469 		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4470 			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4471 			v4l2_ctrl_g_ctrl(sd->blue),
4472 			v4l2_ctrl_g_ctrl(sd->red));
4473 	else
4474 		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4475 			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4476 	if (sd->sensor == SENSOR_SOI763A)
4477 		setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual));
4478 	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4479 }
4480 
4481 static void soi763a_6810_start(struct gspca_dev *gspca_dev)
4482 {
4483 	struct sd *sd = (struct sd *) gspca_dev;
4484 	static const struct cmd bridge_init_2[] = {
4485 		{TP6800_R7A_BLK_THRLD, 0x00},
4486 		{TP6800_R79_QUALITY, 0x04},
4487 		{TP6800_R79_QUALITY, 0x01},
4488 	};
4489 	static const struct cmd bridge_init_3[] = {
4490 		{TP6800_R31_PIXEL_START, 0x20},
4491 		{TP6800_R32_PIXEL_END_L, 0x9f},
4492 		{TP6800_R33_PIXEL_END_H, 0x02},
4493 		{TP6800_R34_LINE_START, 0x13},
4494 		{TP6800_R35_LINE_END_L, 0xf8},
4495 		{TP6800_R36_LINE_END_H, 0x01},
4496 	};
4497 	static const struct cmd bridge_init_6[] = {
4498 		{0x08, 0xff},
4499 		{0x09, 0xff},
4500 		{0x0a, 0x5f},
4501 		{0x0b, 0x80},
4502 	};
4503 
4504 	reg_w(gspca_dev, 0x22, gspca_dev->alt);
4505 	bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4506 	reg_w(gspca_dev, 0x59, 0x40);
4507 	if (sd->sensor == SENSOR_CX0342)
4508 		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4509 			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4510 			v4l2_ctrl_g_ctrl(sd->blue),
4511 			v4l2_ctrl_g_ctrl(sd->red));
4512 	else
4513 		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4514 			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4515 	reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4516 	reg_w_buf(gspca_dev, tp6810_ov_init_common,
4517 			ARRAY_SIZE(tp6810_ov_init_common));
4518 	reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4519 	if (gspca_dev->curr_mode) {
4520 		reg_w(gspca_dev, 0x4a, 0x7f);
4521 		reg_w(gspca_dev, 0x07, 0x05);
4522 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
4523 	} else {
4524 		reg_w(gspca_dev, 0x4a, 0xff);
4525 		reg_w(gspca_dev, 0x07, 0x85);
4526 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
4527 	}
4528 	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4529 	reg_w_buf(gspca_dev, tp6810_bridge_start,
4530 			ARRAY_SIZE(tp6810_bridge_start));
4531 
4532 	if (gspca_dev->curr_mode) {
4533 		reg_w(gspca_dev, 0x4f, 0x00);
4534 		reg_w(gspca_dev, 0x4e, 0x7c);
4535 	}
4536 
4537 	reg_w(gspca_dev, 0x00, 0x00);
4538 
4539 	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4540 	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4541 				ARRAY_SIZE(color_gain[0]));
4542 	set_led(gspca_dev, 1);
4543 	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0);
4544 	if (sd->sensor == SENSOR_CX0342)
4545 		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4546 			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4547 			v4l2_ctrl_g_ctrl(sd->blue),
4548 			v4l2_ctrl_g_ctrl(sd->red));
4549 	else
4550 		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4551 			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4552 	reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6));
4553 }
4554 
4555 /* -- start the camera -- */
4556 static int sd_start(struct gspca_dev *gspca_dev)
4557 {
4558 	struct sd *sd = (struct sd *) gspca_dev;
4559 
4560 	jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
4561 			gspca_dev->pixfmt.width);
4562 	set_dqt(gspca_dev, sd->quality);
4563 	if (sd->bridge == BRIDGE_TP6800) {
4564 		if (sd->sensor == SENSOR_CX0342)
4565 			cx0342_6800_start(gspca_dev);
4566 		else
4567 			soi763a_6800_start(gspca_dev);
4568 	} else {
4569 		if (sd->sensor == SENSOR_CX0342)
4570 			cx0342_6810_start(gspca_dev);
4571 		else
4572 			soi763a_6810_start(gspca_dev);
4573 		reg_w_buf(gspca_dev, tp6810_late_start,
4574 				ARRAY_SIZE(tp6810_late_start));
4575 		reg_w(gspca_dev, 0x80, 0x03);
4576 		reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e);
4577 
4578 		if (sd->sensor == SENSOR_CX0342)
4579 			setexposure(gspca_dev,
4580 				v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4581 				v4l2_ctrl_g_ctrl(gspca_dev->gain),
4582 				v4l2_ctrl_g_ctrl(sd->blue),
4583 				v4l2_ctrl_g_ctrl(sd->red));
4584 		else
4585 			setexposure(gspca_dev,
4586 				v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4587 				v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4588 		if (sd->sensor == SENSOR_SOI763A)
4589 			setquality(gspca_dev,
4590 				   v4l2_ctrl_g_ctrl(sd->jpegqual));
4591 		if (sd->bridge == BRIDGE_TP6810)
4592 			setautogain(gspca_dev,
4593 				    v4l2_ctrl_g_ctrl(gspca_dev->autogain));
4594 	}
4595 
4596 	setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure));
4597 
4598 	return gspca_dev->usb_err;
4599 }
4600 
4601 static void sd_stopN(struct gspca_dev *gspca_dev)
4602 {
4603 	struct sd *sd = (struct sd *) gspca_dev;
4604 
4605 	if (sd->bridge == BRIDGE_TP6800)
4606 		reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03);
4607 	set_led(gspca_dev, 0);
4608 	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
4609 }
4610 
4611 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
4612 			u8 *data,
4613 			int len)
4614 {
4615 	struct sd *sd = (struct sd *) gspca_dev;
4616 
4617 	/* the start of frame contains:
4618 	 *	ff d8
4619 	 *	ff fe
4620 	 *	width / 16
4621 	 *	height / 8
4622 	 *	quality
4623 	 */
4624 	if (sd->bridge == BRIDGE_TP6810) {
4625 		if (*data != 0x5a) {
4626 /*fixme: don't discard the whole frame..*/
4627 			if (*data == 0xaa || *data == 0x00)
4628 				return;
4629 			if (*data > 0xc0) {
4630 				gspca_dbg(gspca_dev, D_FRAM, "bad frame\n");
4631 				gspca_dev->last_packet_type = DISCARD_PACKET;
4632 				return;
4633 			}
4634 		}
4635 		data++;
4636 		len--;
4637 		if (len < 2) {
4638 			gspca_dev->last_packet_type = DISCARD_PACKET;
4639 			return;
4640 		}
4641 		if (*data == 0xff && data[1] == 0xd8) {
4642 /*fixme: there may be information in the 4 high bits*/
4643 			if (len < 7) {
4644 				gspca_dev->last_packet_type = DISCARD_PACKET;
4645 				return;
4646 			}
4647 			if ((data[6] & 0x0f) != sd->quality)
4648 				set_dqt(gspca_dev, data[6] & 0x0f);
4649 			gspca_frame_add(gspca_dev, FIRST_PACKET,
4650 					sd->jpeg_hdr, JPEG_HDR_SZ);
4651 			gspca_frame_add(gspca_dev, INTER_PACKET,
4652 					data + 7, len - 7);
4653 		} else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) {
4654 			gspca_frame_add(gspca_dev, LAST_PACKET,
4655 					data, len);
4656 		} else {
4657 			gspca_frame_add(gspca_dev, INTER_PACKET,
4658 					data, len);
4659 		}
4660 		return;
4661 	}
4662 
4663 	switch (*data) {
4664 	case 0x55:
4665 		gspca_frame_add(gspca_dev, LAST_PACKET, data, 0);
4666 
4667 		if (len < 8
4668 		 || data[1] != 0xff || data[2] != 0xd8
4669 		 || data[3] != 0xff || data[4] != 0xfe) {
4670 
4671 			/* Have only seen this with corrupt frames */
4672 			gspca_dev->last_packet_type = DISCARD_PACKET;
4673 			return;
4674 		}
4675 		if (data[7] != sd->quality)
4676 			set_dqt(gspca_dev, data[7]);
4677 		gspca_frame_add(gspca_dev, FIRST_PACKET,
4678 				sd->jpeg_hdr, JPEG_HDR_SZ);
4679 		gspca_frame_add(gspca_dev, INTER_PACKET,
4680 				data + 8, len - 8);
4681 		break;
4682 	case 0xaa:
4683 		gspca_dev->last_packet_type = DISCARD_PACKET;
4684 		break;
4685 	case 0xcc:
4686 		if (len >= 3 && (data[1] != 0xff || data[2] != 0xd8))
4687 			gspca_frame_add(gspca_dev, INTER_PACKET,
4688 					data + 1, len - 1);
4689 		else
4690 			gspca_dev->last_packet_type = DISCARD_PACKET;
4691 		break;
4692 	}
4693 }
4694 
4695 static void sd_dq_callback(struct gspca_dev *gspca_dev)
4696 {
4697 	struct sd *sd = (struct sd *) gspca_dev;
4698 	int ret, alen;
4699 	int luma, expo;
4700 
4701 	if (sd->ag_cnt < 0)
4702 		return;
4703 	if (--sd->ag_cnt > 5)
4704 		return;
4705 	switch (sd->ag_cnt) {
4706 /*	case 5: */
4707 	default:
4708 		reg_w(gspca_dev, 0x7d, 0x00);
4709 		break;
4710 	case 4:
4711 		reg_w(gspca_dev, 0x27, 0xb0);
4712 		break;
4713 	case 3:
4714 		reg_w(gspca_dev, 0x0c, 0x01);
4715 		break;
4716 	case 2:
4717 		ret = usb_bulk_msg(gspca_dev->dev,
4718 				usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4719 				gspca_dev->usb_buf,
4720 				32,
4721 				&alen,
4722 				500);
4723 		if (ret < 0) {
4724 			pr_err("bulk err %d\n", ret);
4725 			break;
4726 		}
4727 		/* values not used (unknown) */
4728 		break;
4729 	case 1:
4730 		reg_w(gspca_dev, 0x27, 0xd0);
4731 		break;
4732 	case 0:
4733 		ret = usb_bulk_msg(gspca_dev->dev,
4734 				usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4735 				gspca_dev->usb_buf,
4736 				32,
4737 				&alen,
4738 				500);
4739 		if (ret < 0) {
4740 			pr_err("bulk err %d\n", ret);
4741 			break;
4742 		}
4743 		luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] +
4744 			(gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] +
4745 			(gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] +
4746 			(gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] +
4747 			(gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] +
4748 			(gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] +
4749 			(gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] +
4750 			(gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28])
4751 				/ 8;
4752 		if (gspca_dev->pixfmt.width == 640)
4753 			luma /= 4;
4754 		reg_w(gspca_dev, 0x7d, 0x00);
4755 
4756 		expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure);
4757 		ret = gspca_expo_autogain(gspca_dev, luma,
4758 				60,	/* desired luma */
4759 				6,	/* dead zone */
4760 				2,	/* gain knee */
4761 				70);	/* expo knee */
4762 		sd->ag_cnt = AG_CNT_START;
4763 		if (sd->bridge == BRIDGE_TP6810) {
4764 			int new_expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure);
4765 
4766 			if ((expo >= 128 && new_expo < 128)
4767 			 || (expo < 128 && new_expo >= 128))
4768 				setframerate(gspca_dev, new_expo);
4769 		}
4770 		break;
4771 	}
4772 }
4773 
4774 /* get stream parameters (framerate) */
4775 static void sd_get_streamparm(struct gspca_dev *gspca_dev,
4776 			     struct v4l2_streamparm *parm)
4777 {
4778 	struct sd *sd = (struct sd *) gspca_dev;
4779 	struct v4l2_captureparm *cp = &parm->parm.capture;
4780 	struct v4l2_fract *tpf = &cp->timeperframe;
4781 	int fr, i;
4782 
4783 	cp->capability |= V4L2_CAP_TIMEPERFRAME;
4784 	tpf->numerator = 1;
4785 	i = get_fr_idx(gspca_dev);
4786 	if (i & 0x80) {
4787 		if (sd->bridge == BRIDGE_TP6800)
4788 			fr = rates[6 - (i & 0x07)];
4789 		else
4790 			fr = rates_6810[7 - (i & 0x07)];
4791 	} else {
4792 		fr = rates[6 - i];
4793 	}
4794 	tpf->denominator = fr;
4795 }
4796 
4797 /* set stream parameters (framerate) */
4798 static void sd_set_streamparm(struct gspca_dev *gspca_dev,
4799 			     struct v4l2_streamparm *parm)
4800 {
4801 	struct sd *sd = (struct sd *) gspca_dev;
4802 	struct v4l2_captureparm *cp = &parm->parm.capture;
4803 	struct v4l2_fract *tpf = &cp->timeperframe;
4804 	int fr, i;
4805 
4806 	if (tpf->numerator == 0 || tpf->denominator == 0)
4807 		sd->framerate = DEFAULT_FRAME_RATE;
4808 	else
4809 		sd->framerate = tpf->denominator / tpf->numerator;
4810 
4811 	if (gspca_dev->streaming)
4812 		setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure));
4813 
4814 	/* Return the actual framerate */
4815 	i = get_fr_idx(gspca_dev);
4816 	if (i & 0x80)
4817 		fr = rates_6810[7 - (i & 0x07)];
4818 	else
4819 		fr = rates[6 - i];
4820 	tpf->numerator = 1;
4821 	tpf->denominator = fr;
4822 }
4823 
4824 static int sd_set_jcomp(struct gspca_dev *gspca_dev,
4825 			const struct v4l2_jpegcompression *jcomp)
4826 {
4827 	struct sd *sd = (struct sd *) gspca_dev;
4828 
4829 	if (sd->sensor != SENSOR_SOI763A)
4830 		return -ENOTTY;
4831 	v4l2_ctrl_s_ctrl(sd->jpegqual, jcomp->quality);
4832 	return 0;
4833 }
4834 
4835 static int sd_get_jcomp(struct gspca_dev *gspca_dev,
4836 			struct v4l2_jpegcompression *jcomp)
4837 {
4838 	struct sd *sd = (struct sd *) gspca_dev;
4839 
4840 	if (sd->sensor != SENSOR_SOI763A)
4841 		return -ENOTTY;
4842 	memset(jcomp, 0, sizeof *jcomp);
4843 	jcomp->quality = v4l2_ctrl_g_ctrl(sd->jpegqual);
4844 	jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT
4845 			| V4L2_JPEG_MARKER_DQT;
4846 	return 0;
4847 }
4848 
4849 static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
4850 {
4851 	struct gspca_dev *gspca_dev =
4852 		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
4853 	struct sd *sd = (struct sd *)gspca_dev;
4854 
4855 	gspca_dev->usb_err = 0;
4856 
4857 	if (!gspca_dev->streaming)
4858 		return 0;
4859 
4860 	switch (ctrl->id) {
4861 	case V4L2_CID_SHARPNESS:
4862 		setsharpness(gspca_dev, ctrl->val);
4863 		break;
4864 	case V4L2_CID_GAMMA:
4865 		setgamma(gspca_dev, ctrl->val);
4866 		break;
4867 	case V4L2_CID_BLUE_BALANCE:
4868 		setbgain(gspca_dev, ctrl->val);
4869 		break;
4870 	case V4L2_CID_RED_BALANCE:
4871 		setrgain(gspca_dev, ctrl->val);
4872 		break;
4873 	case V4L2_CID_EXPOSURE:
4874 		sd_setgain(gspca_dev);
4875 		break;
4876 	case V4L2_CID_AUTOGAIN:
4877 		if (ctrl->val)
4878 			break;
4879 		sd_setgain(gspca_dev);
4880 		break;
4881 	case V4L2_CID_JPEG_COMPRESSION_QUALITY:
4882 		jpeg_set_qual(sd->jpeg_hdr, ctrl->val);
4883 		break;
4884 	}
4885 	return gspca_dev->usb_err;
4886 }
4887 
4888 static const struct v4l2_ctrl_ops sd_ctrl_ops = {
4889 	.s_ctrl = sd_s_ctrl,
4890 };
4891 
4892 static int sd_init_controls(struct gspca_dev *gspca_dev)
4893 {
4894 	struct sd *sd = (struct sd *)gspca_dev;
4895 	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
4896 
4897 	gspca_dev->vdev.ctrl_handler = hdl;
4898 	v4l2_ctrl_handler_init(hdl, 4);
4899 	gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4900 			V4L2_CID_EXPOSURE, 1, 0xdc, 1, 0x4e);
4901 	if (sd->sensor == SENSOR_CX0342) {
4902 		sd->red = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4903 			V4L2_CID_RED_BALANCE, 0, 4095, 1, 256);
4904 		sd->blue = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4905 			V4L2_CID_BLUE_BALANCE, 0, 4095, 1, 256);
4906 	}
4907 	if (sd->sensor == SENSOR_SOI763A)
4908 		gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4909 			V4L2_CID_GAIN, 0, 15, 1, 3);
4910 	else
4911 		gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4912 			V4L2_CID_GAIN, 0, 4095, 1, 256);
4913 	sd->sharpness = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4914 			V4L2_CID_SHARPNESS, 0, 3, 1, 2);
4915 	sd->gamma = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4916 			V4L2_CID_GAMMA, 0, NGAMMA - 1, 1,
4917 			(sd->sensor == SENSOR_SOI763A &&
4918 			 sd->bridge == BRIDGE_TP6800) ? 0 : 1);
4919 	if (sd->bridge == BRIDGE_TP6810)
4920 		gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4921 			V4L2_CID_AUTOGAIN, 0, 1, 1, 1);
4922 	if (sd->sensor == SENSOR_SOI763A)
4923 		sd->jpegqual = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4924 			V4L2_CID_JPEG_COMPRESSION_QUALITY,
4925 			0, 15, 1, (sd->bridge == BRIDGE_TP6810) ? 0 : 13);
4926 
4927 	if (hdl->error) {
4928 		pr_err("Could not initialize controls\n");
4929 		return hdl->error;
4930 	}
4931 	if (gspca_dev->autogain)
4932 		v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false);
4933 	else
4934 		v4l2_ctrl_cluster(2, &gspca_dev->exposure);
4935 	return 0;
4936 }
4937 
4938 static const struct sd_desc sd_desc = {
4939 	.name = KBUILD_MODNAME,
4940 	.config = sd_config,
4941 	.init = sd_init,
4942 	.init_controls = sd_init_controls,
4943 	.isoc_init = sd_isoc_init,
4944 	.start = sd_start,
4945 	.stopN = sd_stopN,
4946 	.pkt_scan = sd_pkt_scan,
4947 	.dq_callback = sd_dq_callback,
4948 	.get_streamparm = sd_get_streamparm,
4949 	.set_streamparm = sd_set_streamparm,
4950 	.get_jcomp = sd_get_jcomp,
4951 	.set_jcomp = sd_set_jcomp,
4952 };
4953 
4954 static const struct usb_device_id device_table[] = {
4955 	{USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800},
4956 	{USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810},
4957 	{}			/* Terminating entry */
4958 };
4959 
4960 MODULE_DEVICE_TABLE(usb, device_table);
4961 
4962 static int sd_probe(struct usb_interface *interface,
4963 		    const struct usb_device_id *id)
4964 {
4965 	return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd),
4966 			       THIS_MODULE);
4967 }
4968 
4969 static struct usb_driver sd_driver = {
4970 	.name = KBUILD_MODNAME,
4971 	.id_table = device_table,
4972 	.probe = sd_probe,
4973 	.disconnect = gspca_disconnect,
4974 #ifdef CONFIG_PM
4975 	.suspend = gspca_suspend,
4976 	.resume = gspca_resume,
4977 	.reset_resume = gspca_resume,
4978 #endif
4979 };
4980 
4981 module_usb_driver(sd_driver);
4982 
4983 module_param(force_sensor, int, 0644);
4984 MODULE_PARM_DESC(force_sensor,
4985 	"Force sensor. 0: cx0342, 1: soi763a");
4986