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