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