1 | #include "globals.h"
|
---|
2 | #include "oscam-string.h"
|
---|
3 | #include "reader-common.h"
|
---|
4 | #include "reader-dre-st20.h"
|
---|
5 | #include "reader-dre-common.h"
|
---|
6 |
|
---|
7 | int32_t dre_common_get_emm_type(EMM_PACKET *ep, struct s_reader *rdr)
|
---|
8 | {
|
---|
9 | switch(ep->emm[0])
|
---|
10 | {
|
---|
11 | case 0x87:
|
---|
12 | ep->type = UNIQUE;
|
---|
13 | memset(ep->hexserial, 0, 8);
|
---|
14 | memcpy(ep->hexserial, &ep->emm[3], 4);
|
---|
15 | return (!memcmp(&rdr->sa[0][0], &ep->emm[3], 4));
|
---|
16 |
|
---|
17 | case 0x83:
|
---|
18 | case 0x89:
|
---|
19 | ep->type = SHARED;
|
---|
20 | // FIXME: Seems to be that SA is only used with caid 0x4ae1
|
---|
21 | if(rdr->caid == 0x4ae1)
|
---|
22 | {
|
---|
23 | memset(ep->hexserial, 0, 8);
|
---|
24 | memcpy(ep->hexserial, &ep->emm[3], 4);
|
---|
25 | return (!memcmp(&rdr->sa[0][0], &ep->emm[3], 4));
|
---|
26 | }
|
---|
27 | else
|
---|
28 | { return 1; }
|
---|
29 |
|
---|
30 | case 0x8B:
|
---|
31 | ep->type = UNIQUE;
|
---|
32 | memset(ep->hexserial, 0, 8);
|
---|
33 | memcpy(ep->hexserial, &ep->emm[3], 4);
|
---|
34 | switch(ep->emm[7])
|
---|
35 | {
|
---|
36 | case 0x61:
|
---|
37 | return (!memcmp(&rdr->hexserial[3] ,&ep->hexserial[1] , 2));
|
---|
38 | case 0x62:
|
---|
39 | case 0x63:
|
---|
40 | default:
|
---|
41 | return (!memcmp(&rdr->hexserial[2] ,ep->hexserial , 4));
|
---|
42 | }
|
---|
43 |
|
---|
44 | case 0x80:
|
---|
45 | case 0x86:
|
---|
46 | case 0x8C:
|
---|
47 | ep->type = SHARED;
|
---|
48 | memset(ep->hexserial, 0, 8);
|
---|
49 | ep->hexserial[0] = ep->emm[3];
|
---|
50 | return ep->hexserial[0] == rdr->sa[0][0];
|
---|
51 |
|
---|
52 | case 0x82:
|
---|
53 | case 0x91:
|
---|
54 | ep->type = GLOBAL;
|
---|
55 | return 1;
|
---|
56 |
|
---|
57 | default:
|
---|
58 | ep->type = UNKNOWN;
|
---|
59 | return 1;
|
---|
60 | }
|
---|
61 | }
|
---|
62 |
|
---|
63 | int32_t dre_common_get_emm_filter(struct s_reader *rdr, struct s_csystem_emm_filter **emm_filters, unsigned int *filter_count)
|
---|
64 | {
|
---|
65 | if(*emm_filters == NULL)
|
---|
66 | {
|
---|
67 | const unsigned int max_filter_count = 9;
|
---|
68 | if(!cs_malloc(emm_filters, max_filter_count * sizeof(struct s_csystem_emm_filter)))
|
---|
69 | { return ERROR; }
|
---|
70 |
|
---|
71 | struct s_csystem_emm_filter *filters = *emm_filters;
|
---|
72 | *filter_count = 0;
|
---|
73 |
|
---|
74 | int32_t idx = 0;
|
---|
75 |
|
---|
76 | if(rdr->caid == 0x2710)
|
---|
77 | {
|
---|
78 | filters[idx].type = EMM_UNIQUE;
|
---|
79 | filters[idx].enabled = 1;
|
---|
80 | filters[idx].filter[0] = 0x8B;
|
---|
81 | memcpy(&filters[idx].filter[1], &rdr->hexserial[2] , 4);
|
---|
82 | filters[idx].mask[0] = 0xFF;
|
---|
83 | filters[idx].mask[1] = 0x00;
|
---|
84 | filters[idx].mask[2] = 0xFF;
|
---|
85 | filters[idx].mask[3] = 0xFF;
|
---|
86 | filters[idx].mask[4] = 0xF0;
|
---|
87 | idx++;
|
---|
88 | }
|
---|
89 | else
|
---|
90 | {
|
---|
91 | filters[idx].type = EMM_SHARED;
|
---|
92 | filters[idx].enabled = 1;
|
---|
93 | filters[idx].filter[0] = 0x80;
|
---|
94 | filters[idx].filter[1] = rdr->sa[0][0];
|
---|
95 | filters[idx].mask[0] = 0xF2;
|
---|
96 | filters[idx].mask[1] = 0xFF;
|
---|
97 | idx++;
|
---|
98 |
|
---|
99 | filters[idx].type = EMM_GLOBAL;
|
---|
100 | filters[idx].enabled = 1;
|
---|
101 | filters[idx].filter[0] = 0x82;
|
---|
102 | filters[idx].mask[0] = 0xFF;
|
---|
103 | idx++;
|
---|
104 |
|
---|
105 | filters[idx].type = EMM_SHARED;
|
---|
106 | filters[idx].enabled = 1;
|
---|
107 | filters[idx].filter[0] = 0x83;
|
---|
108 | filters[idx].filter[1] = rdr->sa[0][0];
|
---|
109 | filters[idx].mask[0] = 0xF3;
|
---|
110 | if(rdr->caid == 0x4ae1)
|
---|
111 | {
|
---|
112 | memcpy(&filters[idx].filter[1], &rdr->sa[0][0], 4);
|
---|
113 | memset(&filters[idx].mask[1], 0xFF, 4);
|
---|
114 | }
|
---|
115 | filters[idx].mask[1] = 0xFF;
|
---|
116 | idx++;
|
---|
117 |
|
---|
118 | filters[idx].type = EMM_SHARED;
|
---|
119 | filters[idx].enabled = 1;
|
---|
120 | filters[idx].filter[0] = 0x86;
|
---|
121 | filters[idx].filter[1] = rdr->sa[0][0];
|
---|
122 | filters[idx].mask[0] = 0xFF;
|
---|
123 | filters[idx].mask[1] = 0xFF;
|
---|
124 | idx++;
|
---|
125 |
|
---|
126 | filters[idx].type = EMM_UNIQUE;
|
---|
127 | filters[idx].enabled = 1;
|
---|
128 | filters[idx].filter[0] = 0x87;
|
---|
129 | filters[idx].mask[0] = 0xFF;
|
---|
130 |
|
---|
131 | memcpy(&filters[idx].filter[1], &rdr->sa[0][0], 4);
|
---|
132 | memset(&filters[idx].mask[1], 0xFF, 4);
|
---|
133 |
|
---|
134 | idx++;
|
---|
135 |
|
---|
136 | filters[idx].type = EMM_SHARED;
|
---|
137 | filters[idx].enabled = 1;
|
---|
138 | filters[idx].filter[0] = 0x89;
|
---|
139 | filters[idx].mask[0] = 0xFF;
|
---|
140 | // FIXME: Seems to be that SA is only used with caid 0x4ae1
|
---|
141 | if(rdr->caid == 0x4ae1)
|
---|
142 | {
|
---|
143 | memcpy(&filters[idx].filter[1], &rdr->sa[0][0], 4);
|
---|
144 | memset(&filters[idx].mask[1], 0xFF, 4);
|
---|
145 | }
|
---|
146 | idx++;
|
---|
147 |
|
---|
148 | filters[idx].type = EMM_SHARED;
|
---|
149 | filters[idx].enabled = 1;
|
---|
150 | filters[idx].filter[0] = 0x8C;
|
---|
151 | filters[idx].filter[1] = rdr->sa[0][0];
|
---|
152 | filters[idx].mask[0] = 0xFF;
|
---|
153 | filters[idx].mask[1] = 0xFF;
|
---|
154 | idx++;
|
---|
155 |
|
---|
156 | filters[idx].type = EMM_GLOBAL;
|
---|
157 | filters[idx].enabled = 1;
|
---|
158 | filters[idx].filter[0] = 0x91;
|
---|
159 | filters[idx].mask[0] = 0xFF;
|
---|
160 | idx++;
|
---|
161 | }
|
---|
162 |
|
---|
163 | *filter_count = idx;
|
---|
164 | }
|
---|
165 |
|
---|
166 | return OK;
|
---|
167 | }
|
---|
168 |
|
---|
169 | // overcrypt code
|
---|
170 |
|
---|
171 | extern uint8_t dre_initial_snippet[3694];
|
---|
172 |
|
---|
173 | static uint16_t gId = 0xFFFF;
|
---|
174 | static uint32_t decrypt_addr;
|
---|
175 | static uint32_t gRawSec = 0;
|
---|
176 | static uint8_t gVersion = 0xFF;
|
---|
177 |
|
---|
178 | typedef struct data_block_t
|
---|
179 | {
|
---|
180 | uint8_t *data;
|
---|
181 | uint32_t size;
|
---|
182 | uint32_t used;
|
---|
183 | } data_block;
|
---|
184 |
|
---|
185 | typedef struct memory_block_t
|
---|
186 | {
|
---|
187 | uint8_t *pos;
|
---|
188 | uint8_t *end;
|
---|
189 | } memory_block;
|
---|
190 |
|
---|
191 | static data_block raw_buffer = { NULL, 0, 0 };
|
---|
192 | static data_block code_buffer = { NULL, 0, 0 };
|
---|
193 |
|
---|
194 | static int offtin(uint8_t *buf)
|
---|
195 | {
|
---|
196 | int y;
|
---|
197 | y = buf[7] & 0x7F;
|
---|
198 | y = y * 256; y += buf[6];
|
---|
199 | y = y * 256; y += buf[5];
|
---|
200 | y = y * 256; y += buf[4];
|
---|
201 | y = y * 256; y += buf[3];
|
---|
202 | y = y * 256; y += buf[2];
|
---|
203 | y = y * 256; y += buf[1];
|
---|
204 | y = y * 256; y += buf[0];
|
---|
205 | if(buf[7] & 0x80) y -= y;
|
---|
206 | return y;
|
---|
207 | }
|
---|
208 |
|
---|
209 | static int bspatch(uint8_t *dest, uint8_t *src, int src_len, uint8_t *patch)
|
---|
210 | {
|
---|
211 | int i, newsize, bzctrllen, bzdatalen, oldpos, newpos, ctrl[3];
|
---|
212 | uint8_t *cstream, *dstream, *estream;
|
---|
213 |
|
---|
214 | if(memcmp(patch, "BSDIFF40", 8)) return -1;
|
---|
215 |
|
---|
216 | bzctrllen = offtin(patch + 8);
|
---|
217 | bzdatalen = offtin(patch + 16);
|
---|
218 | newsize = offtin(patch + 24);
|
---|
219 | if((bzctrllen < 0) || (bzdatalen < 0) || (newsize < 0)) return -1;
|
---|
220 |
|
---|
221 | oldpos = 0;
|
---|
222 | newpos = 0;
|
---|
223 | cstream = patch + 32;
|
---|
224 | dstream = cstream + bzctrllen;
|
---|
225 | estream = dstream + bzdatalen;
|
---|
226 |
|
---|
227 | while(newpos < newsize)
|
---|
228 | {
|
---|
229 | /* Read control data */
|
---|
230 | for(i = 0; i < 3; i++)
|
---|
231 | {
|
---|
232 | ctrl[i] = offtin(cstream);
|
---|
233 | cstream += 8;
|
---|
234 | }
|
---|
235 |
|
---|
236 | /* Sanity-check */
|
---|
237 | if((newpos + ctrl[0]) > newsize) return -1;
|
---|
238 |
|
---|
239 | /* Read diff string */
|
---|
240 | memcpy(dest + newpos, dstream, ctrl[0]);
|
---|
241 | dstream += ctrl[0];
|
---|
242 |
|
---|
243 | /* Add old data to diff string */
|
---|
244 | for(i = 0; i < ctrl[0]; i++)
|
---|
245 | {
|
---|
246 | if(((oldpos + i) >= 0) && ((oldpos + i) < src_len)) dest[newpos + i] += src[oldpos + i];
|
---|
247 | }
|
---|
248 |
|
---|
249 | /* Adjust pointers */
|
---|
250 | newpos += ctrl[0];
|
---|
251 | oldpos += ctrl[0];
|
---|
252 |
|
---|
253 | /* Sanity-check */
|
---|
254 | if((newpos + ctrl[1]) > newsize) return -1;
|
---|
255 |
|
---|
256 | /* Read extra string */
|
---|
257 | memcpy(dest + newpos, estream, ctrl[1]);
|
---|
258 | estream += ctrl[1];
|
---|
259 |
|
---|
260 | /* Adjust pointers */
|
---|
261 | newpos += ctrl[1];
|
---|
262 | oldpos += ctrl[2];
|
---|
263 | }
|
---|
264 | return newsize;
|
---|
265 | }
|
---|
266 |
|
---|
267 | static int dre_unpack(uint8_t *dest, uint8_t *src, int len)
|
---|
268 | {
|
---|
269 | uint8_t dbuf[0x1000], mask;
|
---|
270 | int i, soffs, doffs, dbidx, boffs, n;
|
---|
271 |
|
---|
272 | dbidx = 4078;
|
---|
273 | memset(dbuf, 32, 4078);
|
---|
274 |
|
---|
275 | for(soffs = 0, doffs = 0; soffs < len; )
|
---|
276 | {
|
---|
277 | mask = src[soffs++];
|
---|
278 | for(i = 0; i < 8 && soffs < len; i++, mask >>= 1)
|
---|
279 | {
|
---|
280 | if(mask & 1)
|
---|
281 | {
|
---|
282 | dest[doffs++] = dbuf[dbidx] = src[soffs++];
|
---|
283 | dbidx = (dbidx + 1) & 0xfff;
|
---|
284 | }
|
---|
285 | else
|
---|
286 | {
|
---|
287 | boffs = src[soffs++];
|
---|
288 | n = src[soffs++];
|
---|
289 | boffs |= (n & 0xf0) << 4;
|
---|
290 | n &= 0xf;
|
---|
291 | n += 3;
|
---|
292 |
|
---|
293 | while(n--)
|
---|
294 | {
|
---|
295 | boffs &= 0xfff;
|
---|
296 | dest[doffs++] = dbuf[dbidx] = dbuf[boffs++];
|
---|
297 | dbidx = (dbidx + 1) & 0xfff;
|
---|
298 | }
|
---|
299 | }
|
---|
300 | }
|
---|
301 | }
|
---|
302 | return doffs;
|
---|
303 | }
|
---|
304 |
|
---|
305 | typedef struct
|
---|
306 | {
|
---|
307 | int magic_number; // magic number - value
|
---|
308 | int codesize; // size of code in the rcu
|
---|
309 | int entrypointoffset; // entrypoint offset into the code
|
---|
310 | int datasize; // size of data region
|
---|
311 | int datalocationoffset; // offset to place data at
|
---|
312 | int bsssize; // size of bss region
|
---|
313 | int bsslocationoffset; // offset to place bss at
|
---|
314 | int staticlinkoffset; // offset to staticlink in data
|
---|
315 | int relsize; // size of relocation table
|
---|
316 | int conssize; // size of constructor table
|
---|
317 | int dessize; // size of destructor table
|
---|
318 | int stacksize; // size of stack this rcu needs
|
---|
319 | int heapsize; // size of heap this rcu needs
|
---|
320 | int dbgfilenamesize; // size of .dbg filename
|
---|
321 | int slot0; // 4 words space for user use
|
---|
322 | int slot1;
|
---|
323 | int slot2;
|
---|
324 | int slot3;
|
---|
325 | } rcu_header_t;
|
---|
326 |
|
---|
327 | static void rcu_load_offs(uint32_t *offs, uint8_t *buf, int size)
|
---|
328 | {
|
---|
329 | uint32_t i;
|
---|
330 | for(i = 0; i < size / sizeof(int); i++)
|
---|
331 | {
|
---|
332 | offs[i] = (uint32_t)(buf[3 + i * 4] << 24) | (buf[2 + i * 4] << 16) | (buf[1 + i * 4] << 8) | buf[0 + i * 4];
|
---|
333 | }
|
---|
334 | }
|
---|
335 |
|
---|
336 | static void rcu_load(uint8_t *rcu)
|
---|
337 | {
|
---|
338 | int rcu_data_size;
|
---|
339 | uint32_t i;
|
---|
340 | uint32_t nexports, nimports;
|
---|
341 | rcu_header_t rcuh;
|
---|
342 | uint8_t *ptr, *rcu_code, *rcu_data;
|
---|
343 |
|
---|
344 | rcu_load_offs((uint32_t *)&rcuh, rcu, sizeof(rcu_header_t));
|
---|
345 | ptr = rcu + sizeof(rcu_header_t);
|
---|
346 | rcu_code = ptr;
|
---|
347 | ptr += rcuh.codesize;
|
---|
348 | rcu_data_size = rcuh.datasize + rcuh.bsssize;
|
---|
349 | rcu_data = ptr;
|
---|
350 | ptr += rcuh.datasize;
|
---|
351 |
|
---|
352 | if(rcuh.relsize)
|
---|
353 | {
|
---|
354 | uint32_t relocations[rcuh.relsize / sizeof(int)];
|
---|
355 | rcu_load_offs(relocations, ptr, rcuh.relsize);
|
---|
356 | ptr += rcuh.relsize;
|
---|
357 | }
|
---|
358 |
|
---|
359 | if(rcuh.conssize)
|
---|
360 | {
|
---|
361 | uint32_t constructors[rcuh.conssize / sizeof(int)];
|
---|
362 | rcu_load_offs(constructors, ptr, rcuh.conssize);
|
---|
363 | ptr += rcuh.conssize;
|
---|
364 | }
|
---|
365 |
|
---|
366 | if(rcuh.dessize)
|
---|
367 | {
|
---|
368 | uint32_t destructors[rcuh.dessize / sizeof(int)];
|
---|
369 | rcu_load_offs(destructors, ptr, rcuh.dessize);
|
---|
370 | }
|
---|
371 |
|
---|
372 | ptr = rcu_data + rcu_data_size - 16 + 4;
|
---|
373 | rcu_load_offs(&nexports, ptr, sizeof(int));
|
---|
374 | if(nexports)
|
---|
375 | {
|
---|
376 | uint32_t exports[nexports * 3];
|
---|
377 | rcu_load_offs(exports, ptr - nexports * sizeof(int) * 3, nexports * sizeof(int) * 3);
|
---|
378 | for(i = 0; i < nexports; i++)
|
---|
379 | {
|
---|
380 | char *symbol = (char *) (rcu_code + exports[0 + i * 3]);
|
---|
381 | uint32_t faddr = exports[2 + i * 3];
|
---|
382 | if(strcmp(symbol, "snippet_decrypt") == 0) decrypt_addr = faddr;
|
---|
383 | }
|
---|
384 | }
|
---|
385 |
|
---|
386 | ptr -= nexports * 3 * sizeof(int) + 8;
|
---|
387 | rcu_load_offs(&nimports, ptr, sizeof(int));
|
---|
388 | if(nimports)
|
---|
389 | {
|
---|
390 | uint32_t imports[nimports * 3];
|
---|
391 | rcu_load_offs(imports, ptr - nimports * sizeof(int) * 3, nimports * sizeof(int) * 3);
|
---|
392 | }
|
---|
393 | }
|
---|
394 |
|
---|
395 | int load_sections(uint8_t *body)
|
---|
396 | {
|
---|
397 | uint8_t section[4096];
|
---|
398 | uint16_t sect_len, sect_no, last_sect_no, curr_sect_no = 0;
|
---|
399 | int body_len, total_body_len = 0;
|
---|
400 | uint32_t i=0;
|
---|
401 |
|
---|
402 | while((i + 3) < raw_buffer.used)
|
---|
403 | {
|
---|
404 | memcpy(section, raw_buffer.data + i, 3);
|
---|
405 | i += 3;
|
---|
406 | memcpy(§_len, section + 1, 2);
|
---|
407 | sect_len = ntohs(sect_len) & 0xfff;
|
---|
408 |
|
---|
409 | memcpy(section + 3, raw_buffer.data + i, sect_len);
|
---|
410 | i += sect_len;
|
---|
411 |
|
---|
412 | if(section[0] != 0x91 || sect_len < (4 + 5)) continue;
|
---|
413 |
|
---|
414 | uint32_t crc = crc32(-1, section, sect_len + 3 - 4);
|
---|
415 | uint32_t sect_crc = (uint32_t) section[sect_len + 2] << 24 | section[sect_len + 1] << 16 | section[sect_len] << 8 | section[sect_len - 1];
|
---|
416 |
|
---|
417 | if(crc != sect_crc)
|
---|
418 | {
|
---|
419 | cs_log("[icg] Broken section crc %08x %08x\n",(uint32_t) crc,(uint32_t) sect_crc);
|
---|
420 | continue;
|
---|
421 | }
|
---|
422 |
|
---|
423 | sect_no = section[6];
|
---|
424 | last_sect_no = section[7];
|
---|
425 |
|
---|
426 | if(curr_sect_no == 0)
|
---|
427 | {
|
---|
428 | gId = (section[13] << 8) | section[14];
|
---|
429 | gVersion = (section[5] & 0x3e) >> 1;
|
---|
430 | }
|
---|
431 |
|
---|
432 | if(curr_sect_no == sect_no)
|
---|
433 | {
|
---|
434 | body_len = sect_len - 5 - 4;
|
---|
435 | memcpy(body, section + 8, body_len);
|
---|
436 | total_body_len += body_len;
|
---|
437 | body += body_len;
|
---|
438 | curr_sect_no++;
|
---|
439 | }
|
---|
440 |
|
---|
441 | if(curr_sect_no > last_sect_no) break;
|
---|
442 | }
|
---|
443 | return total_body_len;
|
---|
444 | }
|
---|
445 |
|
---|
446 | static int32_t allocate_data_block(data_block *buff, uint32_t size)
|
---|
447 | {
|
---|
448 | if (buff->data == NULL)
|
---|
449 | {
|
---|
450 | buff->data = malloc(size);
|
---|
451 | if (buff->data == NULL) { return -1; }
|
---|
452 | buff->size = size;
|
---|
453 | buff->used = 0;
|
---|
454 | }
|
---|
455 |
|
---|
456 | if (buff->size < size)
|
---|
457 | {
|
---|
458 | uint8_t *new_buff;
|
---|
459 |
|
---|
460 | new_buff = malloc(size);
|
---|
461 | if (new_buff == NULL) { return -1; }
|
---|
462 | memcpy(new_buff, buff->data, buff->used);
|
---|
463 |
|
---|
464 | free(buff->data);
|
---|
465 |
|
---|
466 | buff->data = new_buff;
|
---|
467 | buff->size = size;
|
---|
468 | }
|
---|
469 | return 0;
|
---|
470 | }
|
---|
471 |
|
---|
472 | uint8_t Drecrypt2OverCW(uint16_t overcryptId, uint8_t *cw)
|
---|
473 | {
|
---|
474 | if(overcryptId == gId)
|
---|
475 | {
|
---|
476 | if(st20_run(code_buffer.data, code_buffer.used, decrypt_addr, cw, overcryptId)) return 0;
|
---|
477 | else return 1;
|
---|
478 | }
|
---|
479 | else
|
---|
480 | {
|
---|
481 | cs_log("[icg] ICG algo %04X not found", overcryptId);
|
---|
482 | }
|
---|
483 | return 2;
|
---|
484 | }
|
---|
485 |
|
---|
486 | void Drecrypt2OverEMM(uint8_t *emm)
|
---|
487 | {
|
---|
488 | uint32_t dataLen;
|
---|
489 |
|
---|
490 | if(gVersion == (emm[5] & 0x3e) >> 1)
|
---|
491 | {
|
---|
492 | return;
|
---|
493 | }
|
---|
494 |
|
---|
495 | if(emm[6] == 0 && (gId == ((emm[13] << 8) | emm[14])))
|
---|
496 | {
|
---|
497 | return;
|
---|
498 | }
|
---|
499 |
|
---|
500 | if (gRawSec == 0)
|
---|
501 | {
|
---|
502 | if(emm[6] != 0)
|
---|
503 | {
|
---|
504 | return;
|
---|
505 | }
|
---|
506 | }
|
---|
507 |
|
---|
508 | if (emm[6] != gRawSec)
|
---|
509 | {
|
---|
510 | gRawSec = 0;
|
---|
511 | return;
|
---|
512 | }
|
---|
513 |
|
---|
514 | dataLen = ((emm[1] & 0xF) << 8) | emm[2];
|
---|
515 | dataLen += 3;
|
---|
516 | if(dataLen < 4)
|
---|
517 | {
|
---|
518 | return;
|
---|
519 | }
|
---|
520 |
|
---|
521 | if (gRawSec == 0)
|
---|
522 | {
|
---|
523 | raw_buffer.used = 0;
|
---|
524 | }
|
---|
525 |
|
---|
526 | if (allocate_data_block(&raw_buffer, raw_buffer.used + dataLen) < 0)
|
---|
527 | {
|
---|
528 | cs_log("[icg] No free memory");
|
---|
529 | return;
|
---|
530 | }
|
---|
531 |
|
---|
532 | memcpy(raw_buffer.data + raw_buffer.used, emm, dataLen);
|
---|
533 | raw_buffer.used += dataLen;
|
---|
534 |
|
---|
535 | if (emm[6] != emm[7])
|
---|
536 | {
|
---|
537 | gRawSec++;
|
---|
538 | return;
|
---|
539 | }
|
---|
540 |
|
---|
541 | gRawSec = 0;
|
---|
542 |
|
---|
543 | int patch_len, rcu_len, len, snip_len;
|
---|
544 | uint8_t *buf = malloc(0x1000), *snip = malloc(0x10000), *rcu = malloc(0x10000), *patch = malloc(0x10000);
|
---|
545 |
|
---|
546 | if(buf == NULL || snip == NULL || rcu == NULL || patch == NULL)
|
---|
547 | {
|
---|
548 | cs_log("[icg] No free memory");
|
---|
549 | goto exit_werr;
|
---|
550 | }
|
---|
551 |
|
---|
552 | snip_len = (dre_initial_snippet[4] << 24) | (dre_initial_snippet[5] << 16) | (dre_initial_snippet[6] << 8) | dre_initial_snippet[7];
|
---|
553 |
|
---|
554 | if(dre_unpack(snip, dre_initial_snippet + 8, sizeof(dre_initial_snippet) - 8) >= snip_len)
|
---|
555 | {
|
---|
556 | if((len = load_sections(buf)) > 0)
|
---|
557 | {
|
---|
558 | patch_len = (buf[14] << 24) | (buf[15] << 16) | (buf[16] << 8) | buf[17];
|
---|
559 | if(dre_unpack(patch, buf + 18, len - 18) >= patch_len)
|
---|
560 | {
|
---|
561 | rcu_len = bspatch(rcu, snip, snip_len, patch);
|
---|
562 | if(rcu_len > 0)
|
---|
563 | {
|
---|
564 | rcu_load(rcu);
|
---|
565 | if(allocate_data_block(&code_buffer, rcu_len) < 0)
|
---|
566 | {
|
---|
567 | cs_log("[icg] No free memory");
|
---|
568 | goto exit_werr;
|
---|
569 | }
|
---|
570 |
|
---|
571 | memcpy(code_buffer.data, rcu, rcu_len);
|
---|
572 | code_buffer.used = (uint32_t) rcu_len;
|
---|
573 | cs_log("[icg] snippet patch created. ICG algo %04X", gId);
|
---|
574 | }
|
---|
575 | }
|
---|
576 | }
|
---|
577 | }
|
---|
578 |
|
---|
579 | exit_werr:
|
---|
580 | if(buf != NULL) free(buf);
|
---|
581 | if(snip != NULL) free(snip);
|
---|
582 | if(rcu != NULL) free(rcu);
|
---|
583 | if(patch != NULL) free(patch);
|
---|
584 | }
|
---|
585 |
|
---|
586 | void ReasmEMM82(uint8_t *emm)
|
---|
587 | {
|
---|
588 | uint16_t dataLen = (uint16_t) (((emm[1] & 0xF) << 8) | emm[2]) + 5;
|
---|
589 | uint8_t emmbuf[dataLen];
|
---|
590 | uint32_t crc;
|
---|
591 |
|
---|
592 | emmbuf[0] = 0x91;
|
---|
593 | emmbuf[1] = (uint8_t)(((dataLen - 3) >> 8) | 0x80);
|
---|
594 | emmbuf[2] = (uint8_t)(dataLen - 3) & 0xFF;
|
---|
595 | emmbuf[3] = ((emm[7] + 1) & 0x0F);
|
---|
596 | emmbuf[4] = 0;
|
---|
597 |
|
---|
598 | memcpy(&emmbuf[5], &emm[7], dataLen);
|
---|
599 |
|
---|
600 | emmbuf[5] += 1;
|
---|
601 |
|
---|
602 | crc = crc32(-1, emmbuf, dataLen - 4);
|
---|
603 |
|
---|
604 | emmbuf[dataLen - 1] = (uint8_t) ((crc >> 24) & 0xFF);
|
---|
605 | emmbuf[dataLen - 2] = (uint8_t) ((crc >> 16) & 0xFF);
|
---|
606 | emmbuf[dataLen - 3] = (uint8_t) ((crc >> 8) & 0xFF);
|
---|
607 | emmbuf[dataLen - 4] = (uint8_t) (crc & 0xFF);
|
---|
608 |
|
---|
609 | Drecrypt2OverEMM(emmbuf);
|
---|
610 | }
|
---|
611 |
|
---|
612 | uint8_t dre_initial_snippet[3694] =
|
---|
613 | {
|
---|
614 | 0x6F, 0xF0, 0x0E, 0x0D, 0x00, 0x00, 0x18, 0x75, 0xFF, 0x75, 0x63, 0x72, 0x2E, 0x2C, 0x17, 0x00,
|
---|
615 | 0x00, 0x3F, 0x3D, 0x15, 0x00, 0x00, 0x9C, 0x00, 0xFB, 0xF7, 0xFA, 0xF5, 0x85, 0x4C, 0xFB, 0xF0,
|
---|
616 | 0x04, 0xFB, 0xF8, 0xFB, 0xF1, 0xF7, 0xF0, 0x24, 0x0E, 0x42, 0xFF, 0x22, 0xF0, 0x41, 0x22, 0xF0,
|
---|
617 | 0x60, 0xBF, 0x73, 0xFF, 0x24, 0x4B, 0x72, 0x9D, 0xD0, 0x70, 0x42, 0xF4, 0xBF, 0xA4, 0x70, 0xB1,
|
---|
618 | 0x22, 0xF0, 0x40, 0x49, 0x00, 0x64, 0xFF, 0xB0, 0x25, 0x73, 0xD0, 0x24, 0x4C, 0x25, 0x72, 0xFF,
|
---|
619 | 0x25, 0xFF, 0x21, 0x22, 0x29, 0xA2, 0x25, 0x72, 0xFF, 0x42, 0x21, 0xFB, 0xFA, 0xF6, 0x22, 0x26,
|
---|
620 | 0x03, 0xFF, 0x80, 0x26, 0x2A, 0x0E, 0x80, 0x22, 0x2B, 0x07, 0xFF, 0x80, 0x22, 0x28, 0x05, 0x80,
|
---|
621 | 0x26, 0x2C, 0x07, 0xFF, 0x80, 0x2C, 0x24, 0x05, 0x80, 0x27, 0x20, 0x09, 0xBF, 0x80, 0x26, 0x2E,
|
---|
622 | 0x00, 0x80, 0x23, 0x73, 0x00, 0x22, 0xFF, 0x2C, 0x09, 0x80, 0x25, 0x22, 0x0B, 0x80, 0x25, 0xFF,
|
---|
623 | 0x2C, 0x04, 0x80, 0x21, 0x21, 0x2F, 0x03, 0x2A, 0xFF, 0x24, 0x08, 0x80, 0x2A, 0x27, 0x0F, 0x80,
|
---|
624 | 0x23, 0x7D, 0x2F, 0x8C, 0x00, 0x2D, 0x05, 0x80, 0x23, 0x2C, 0x84, 0x01, 0xFA, 0x90, 0x00, 0x2F,
|
---|
625 | 0x78, 0x00, 0x26, 0x08, 0x80, 0x2E, 0x0A, 0xFF, 0x80, 0x80, 0x27, 0x24, 0x09, 0x80, 0x27, 0x2C,
|
---|
626 | 0xCF, 0x06, 0x80, 0x27, 0x29, 0x78, 0x00, 0x6F, 0x00, 0x2A, 0x2F, 0xFF, 0x0D, 0x80, 0x28, 0x23,
|
---|
627 | 0x05, 0x80, 0x2B, 0x28, 0xF7, 0x08, 0x80, 0x28, 0xB7, 0x00, 0x26, 0x2F, 0x0E, 0x80, 0xFF, 0x27,
|
---|
628 | 0x25, 0x00, 0x80, 0x2B, 0x21, 0x06, 0x80, 0xFF, 0x2A, 0x25, 0x01, 0x80, 0x21, 0x28, 0x00, 0x80,
|
---|
629 | 0xCB, 0x22, 0x2E, 0xB0, 0x01, 0x0D, 0x6D, 0x00, 0x88, 0x00, 0x28, 0x03, 0xFE, 0x91, 0x00, 0x0C,
|
---|
630 | 0x80, 0x2C, 0x2D, 0x0E, 0x80, 0x2A, 0xB5, 0x04, 0xBC, 0x00, 0x2A, 0xD4, 0x00, 0x27, 0x0C, 0xE5,
|
---|
631 | 0x00, 0x07, 0xFF, 0x80, 0x23, 0x2D, 0x0D, 0x80, 0x25, 0x21, 0x00, 0xFF, 0x80, 0x24, 0x24, 0x0D,
|
---|
632 | 0x80, 0x24, 0x2B, 0x08, 0xFF, 0x80, 0x24, 0x2D, 0x0C, 0x80, 0x2D, 0x21, 0x0A, 0xFE, 0x0D, 0x10,
|
---|
633 | 0x0C, 0x80, 0x28, 0x28, 0x02, 0x80, 0x26, 0xDF, 0x27, 0x0A, 0x80, 0x2A, 0x21, 0x24, 0x10, 0x20,
|
---|
634 | 0x08, 0xEA, 0x85, 0x00, 0x03, 0x21, 0x10, 0x0A, 0x19, 0x10, 0x07, 0x80, 0x2F, 0xFE, 0xCF, 0x01,
|
---|
635 | 0x2D, 0x0B, 0x80, 0x2A, 0x24, 0x00, 0x80, 0xFF, 0x29, 0x20, 0x0E, 0x80, 0x26, 0x22, 0x0A, 0x80,
|
---|
636 | 0xFF, 0x21, 0x20, 0x25, 0x01, 0x2A, 0x21, 0x01, 0x80, 0xD3, 0x2A, 0x03, 0xBC, 0x00, 0x6F, 0x10,
|
---|
637 | 0x24, 0x6F, 0x10, 0x21, 0x22, 0xEF, 0x03, 0x80, 0x2C, 0x02, 0x78, 0x10, 0x20, 0x29, 0x0E, 0xFF,
|
---|
638 | 0x28, 0x27, 0x00, 0x80, 0x27, 0x2F, 0x03, 0x80, 0xFB, 0x29, 0x21, 0x8C, 0x00, 0x73, 0x45, 0x25,
|
---|
639 | 0x71, 0x61, 0xFB, 0x2B, 0x96, 0x43, 0x01, 0x2D, 0x20, 0xAE, 0x70, 0x25, 0xFF, 0xB0, 0x22, 0xF0,
|
---|
640 | 0x70, 0xF1, 0x41, 0x24, 0xF6, 0xF5, 0xC0, 0xA2, 0x12, 0x81, 0xA7, 0x17, 0x21, 0x1D, 0x42, 0x24,
|
---|
641 | 0x7F, 0xFA, 0x21, 0x7D, 0x4C, 0x27, 0xF8, 0xD1, 0xC1, 0x10, 0xEF, 0x24, 0xF0, 0x21, 0xDD, 0xC7,
|
---|
642 | 0x11, 0xF1, 0x21, 0xDD, 0xDF, 0x71, 0x21, 0x7D, 0x23, 0xF3, 0xCC, 0x10, 0x1D, 0x70, 0x6A, 0xBE,
|
---|
643 | 0x10, 0x42, 0xB7, 0x13, 0x1F, 0xBE, 0x11, 0x7F, 0x43, 0xC4, 0x11, 0xEB, 0x7F, 0x43, 0xCA, 0x10,
|
---|
644 | 0xDF, 0xF3, 0x11, 0xF1, 0x21, 0xDF, 0x77, 0x71, 0x21, 0x7F, 0xD8, 0x10, 0xDF, 0x21, 0x1F, 0xDE,
|
---|
645 | 0x18, 0x3B, 0x1E, 0x44, 0xBF, 0x10, 0x7E, 0x21, 0x45, 0xC4, 0x11, 0x1A, 0x20, 0xFA, 0xCA, 0x10,
|
---|
646 | 0xDE, 0x20, 0x22, 0xF1, 0x21, 0xDE, 0x71, 0x21, 0x3D, 0x7E, 0xD8, 0x10, 0xDE, 0x21, 0x1E, 0x70,
|
---|
647 | 0x16, 0x20, 0xE2, 0x13, 0x7B, 0x22, 0x14, 0x16, 0x20, 0x22, 0x74, 0x21, 0x47, 0xC4, 0x10, 0xDE,
|
---|
648 | 0x48, 0x21, 0x24, 0xF0, 0x22, 0xD4, 0x4F, 0x22, 0xF1, 0x22, 0xBF, 0xD4, 0x71, 0x22, 0x74, 0x23,
|
---|
649 | 0xF3, 0x55, 0x20, 0x14, 0x3A, 0x39, 0x28, 0x18, 0x45, 0x21, 0x78, 0x21, 0x4E, 0x4C, 0x21, 0x78,
|
---|
650 | 0x20, 0xFA, 0x53, 0x20, 0xD8, 0x7E, 0x22, 0xF1, 0x22, 0xD8, 0x71, 0x22, 0x5D, 0x78, 0x62, 0x20,
|
---|
651 | 0xD8, 0x22, 0x18, 0x39, 0x28, 0x1A, 0x45, 0x21, 0x5B, 0x7A, 0x49, 0x4C, 0x21, 0x7A, 0x49, 0x53,
|
---|
652 | 0x20, 0xDA, 0xAC, 0x21, 0xBF, 0xF1, 0x22, 0xDA, 0x71, 0x22, 0x7A, 0x62, 0x20, 0xDA, 0x7B, 0x22,
|
---|
653 | 0x1A, 0x39, 0x27, 0x81, 0x21, 0x1A, 0x43, 0xBF, 0x10, 0xD1, 0x7A, 0x4B, 0x21, 0xD3, 0x20, 0xCA,
|
---|
654 | 0x10, 0xDA, 0xD9, 0x21, 0xF1, 0x21, 0xE7, 0xDA, 0x71, 0x21, 0xBC, 0x20, 0xDE, 0x20, 0x1A, 0x70,
|
---|
655 | 0x81, 0xAC, 0xD0, 0x20, 0xC7, 0x24, 0x22, 0x19, 0x45, 0x21, 0x79, 0x7A, 0x22, 0x79, 0xFA, 0x81,
|
---|
656 | 0x21, 0xD9, 0x07, 0x31, 0xF1, 0x22, 0xD9, 0x71, 0x22, 0x7D, 0x79, 0x62, 0x20, 0xD9, 0x22, 0x19,
|
---|
657 | 0x70, 0x81, 0xC4, 0x27, 0xAB, 0x22, 0x1B, 0x45, 0x21, 0x7B, 0x4B, 0x22, 0x7B, 0x52, 0x21, 0xDB,
|
---|
658 | 0x7E, 0x35, 0x31, 0xF1, 0x22, 0xDB, 0x71, 0x22, 0x7B, 0x62, 0x20, 0x57, 0xDB, 0x22, 0x1B, 0x1E,
|
---|
659 | 0x3A, 0x17, 0x45, 0x21, 0x77, 0xA8, 0x22, 0xF5, 0x77, 0xAE, 0x21, 0xD7, 0x63, 0x31, 0xF1, 0x22,
|
---|
660 | 0xD7, 0x71, 0xBB, 0x22, 0x77, 0x62, 0x20, 0xD7, 0x22, 0x17, 0x1E, 0x38, 0x82, 0x1B, 0x22, 0x13,
|
---|
661 | 0xD0, 0x20, 0x22, 0x73, 0xEF, 0x11, 0x8B, 0x30, 0x53, 0x20, 0xFD, 0xD3, 0x91, 0x31, 0xF1, 0x22,
|
---|
662 | 0xD3, 0x71, 0x22, 0x73, 0xBE, 0x62, 0x20, 0xD3, 0x22, 0x13, 0x70, 0x82, 0xF2, 0x26, 0x82, 0xDB,
|
---|
663 | 0x22, 0x12, 0x88, 0x31, 0x72, 0x44, 0x4C, 0x21, 0x72, 0x44, 0xFA, 0x53, 0x20, 0xD2, 0xBF, 0x31,
|
---|
664 | 0xF1, 0x22, 0xD2, 0x71, 0x22, 0x5D, 0x72, 0x62, 0x20, 0xD2, 0x22, 0x12, 0xA8, 0x3A, 0x15, 0x88,
|
---|
665 | 0x31, 0x5B, 0x75, 0x46, 0x4C, 0x21, 0x75, 0x46, 0x53, 0x20, 0xD5, 0xED, 0x31, 0xBF, 0xF1, 0x22,
|
---|
666 | 0xD5, 0x71, 0x22, 0x75, 0x62, 0x20, 0xD5, 0x6B, 0x22, 0x15, 0xA8, 0x3A, 0x11, 0x45, 0x21, 0x71,
|
---|
667 | 0x4F, 0x4C, 0x21, 0xF3, 0x71, 0x4F, 0x53, 0x20, 0x1A, 0x42, 0xF1, 0x22, 0xD1, 0x71, 0xFB, 0x22,
|
---|
668 | 0x71, 0x62, 0x20, 0xD1, 0x22, 0x11, 0x70, 0x82, 0x16, 0x7C, 0x37, 0x21, 0x1C, 0x16, 0x21, 0x7C,
|
---|
669 | 0x1B, 0x23, 0x44, 0x40, 0xCA, 0x10, 0xFD, 0xDC, 0x4A, 0x42, 0xF1, 0x21, 0xDC, 0x71, 0x21, 0x7C,
|
---|
670 | 0x6E, 0xD8, 0x10, 0xDC, 0x21, 0x1C, 0x32, 0x49, 0x22, 0x10, 0x45, 0x21, 0x47, 0x70, 0x21, 0x4A,
|
---|
671 | 0x4C, 0x21, 0x75, 0x40, 0x53, 0x20, 0xD0, 0x7B, 0x42, 0xBF, 0xF1, 0x22, 0xD0, 0x71, 0x22, 0x70,
|
---|
672 | 0x62, 0x20, 0xD0, 0xB3, 0x22, 0x10, 0x32, 0x4A, 0x2B, 0x31, 0x21, 0x7B, 0xEF, 0x12, 0x7B, 0xFA,
|
---|
673 | 0xF5, 0x11, 0xDB, 0xAB, 0x41, 0xF1, 0x21, 0xDB, 0x71, 0x21, 0x74, 0x45, 0x30, 0xB0, 0x40, 0x1B,
|
---|
674 | 0x32, 0x48, 0x51, 0x21, 0x11, 0xBE, 0x11, 0xE5, 0x71, 0xC3, 0x12, 0x71, 0xC9, 0x11, 0xD8, 0x42,
|
---|
675 | 0xF1, 0x21, 0xD1, 0x73, 0x71, 0x21, 0x2B, 0x40, 0xDE, 0x40, 0x11, 0x70, 0x51, 0xDF, 0x16, 0x57,
|
---|
676 | 0x51, 0x21, 0x10, 0xBE, 0x11, 0x70, 0xD5, 0x22, 0x70, 0xDB, 0x21, 0x7D, 0xD0, 0x07, 0x51, 0xF1,
|
---|
677 | 0x21, 0xD0, 0x71, 0x21, 0x8D, 0x40, 0xAA, 0x0C, 0x50, 0x10, 0xF0, 0x49, 0x1E, 0xBE, 0x10, 0x7E,
|
---|
678 | 0xA8, 0x21, 0x7E, 0xBA, 0xAE, 0x20, 0xDE, 0x33, 0x50, 0xF1, 0xDE, 0x71, 0x32, 0x20, 0xDE, 0xD9,
|
---|
679 | 0x1E, 0xF0, 0x49, 0xE3, 0x31, 0x75, 0x4D, 0xC4, 0x10, 0x75, 0x4D, 0x77, 0x24, 0xF0, 0xD5, 0x58,
|
---|
680 | 0x50, 0xF1, 0xD5, 0x71, 0xFD, 0x30, 0xAF, 0xD5, 0x15, 0x70, 0x51, 0xF2, 0x26, 0x51, 0xB5, 0x31,
|
---|
681 | 0x72, 0xEA, 0xE9, 0x31, 0x72, 0xEF, 0x30, 0xD2, 0x7D, 0x50, 0xF1, 0xD2, 0x71, 0xA6, 0xCF, 0x30,
|
---|
682 | 0xD2, 0x12, 0x68, 0x59, 0x87, 0x31, 0x73, 0xA8, 0x21, 0x73, 0xBA, 0xAE, 0x20, 0xD3, 0xA2, 0x50,
|
---|
683 | 0xF1, 0xD3, 0x71, 0xA1, 0x30, 0xD3, 0xD9, 0x13, 0x68, 0x59, 0x44, 0x21, 0x74, 0x4B, 0xC4, 0x10,
|
---|
684 | 0x74, 0x4B, 0x77, 0x24, 0xF0, 0xD4, 0xC7, 0x50, 0xF1, 0xD4, 0x71, 0x61, 0x20, 0xCF, 0xD4, 0x14,
|
---|
685 | 0x70, 0x51, 0xC4, 0x47, 0x11, 0x41, 0x71, 0x21, 0x9A, 0xA8, 0x20, 0xD2, 0xE7, 0x50, 0x24, 0xF0,
|
---|
686 | 0xE6, 0x40, 0xB5, 0x20, 0xD1, 0xA5, 0x72, 0x2B, 0x40, 0xD1, 0xEF, 0x40, 0xC4, 0x47, 0x16, 0x16,
|
---|
687 | 0x20, 0x76, 0xB9, 0x21, 0xC3, 0x51, 0x0F, 0x60, 0x24, 0xF0, 0xD6, 0x15, 0x61, 0xF1, 0x7F, 0xD6,
|
---|
688 | 0x71, 0x76, 0x23, 0xF3, 0xD6, 0x16, 0xD7, 0x59, 0x72, 0x59, 0x31, 0x77, 0x79, 0x22, 0x37, 0x60,
|
---|
689 | 0x24, 0xF0, 0xD7, 0x3D, 0x61, 0xB7, 0xF1, 0xD7, 0x71, 0x73, 0x30, 0xD7, 0x17, 0xD7, 0x58, 0x85,
|
---|
690 | 0x55, 0x1F, 0xD0, 0x20, 0x7F, 0xBB, 0x31, 0x7F, 0xC1, 0x30, 0xDF, 0x64, 0x60, 0xF7, 0xF1, 0xDF,
|
---|
691 | 0x71, 0x03, 0x20, 0xDF, 0x1F, 0x70, 0x85, 0x6E, 0xF2, 0x26, 0x86, 0x22, 0x16, 0xBE, 0x10, 0x22,
|
---|
692 | 0x76, 0x77, 0x42, 0xF5, 0x76, 0x7E, 0x41, 0xD6, 0x8B, 0x61, 0xF1, 0x22, 0xD6, 0x71, 0xB9, 0x22,
|
---|
693 | 0x22, 0x60, 0x90, 0x60, 0x16, 0x70, 0x86, 0xDF, 0x16, 0x86, 0x55, 0x19, 0xBE, 0x10, 0x79, 0xEF,
|
---|
694 | 0x11, 0x79, 0xF5, 0x10, 0xD9, 0xB7, 0x60, 0xB7, 0xF1, 0xD9, 0x71, 0x17, 0x30, 0xD9, 0x19, 0xA2,
|
---|
695 | 0x69, 0x1A, 0xF6, 0xBE, 0x10, 0x7A, 0x48, 0xC4, 0x10, 0x7A, 0x48, 0x24, 0xF0, 0xDD, 0xDA, 0xDC,
|
---|
696 | 0x60, 0xF1, 0xDA, 0x71, 0xBC, 0x20, 0xDA, 0x1A, 0xAA, 0xA2, 0x69, 0x18, 0xBE, 0x10, 0x78, 0xA8,
|
---|
697 | 0x21, 0x78, 0xAE, 0x20, 0xD8, 0x6E, 0x01, 0x70, 0xF1, 0xD8, 0x71, 0x90, 0x20, 0xD8, 0x18, 0xA2,
|
---|
698 | 0x68, 0x9F, 0x87, 0x1B, 0x41, 0x24, 0xFA, 0xA6, 0x42, 0xAC, 0x41, 0xDB, 0xF6, 0xB3, 0x41, 0xDB,
|
---|
699 | 0x71, 0x45, 0x30, 0xDB, 0x1B, 0x70, 0x87, 0x54, 0x1E, 0x70, 0x16, 0x74, 0x1C, 0x1E, 0x70, 0x7C,
|
---|
700 | 0xBB, 0x31, 0x7C, 0xC1, 0x30, 0xDD, 0xDC, 0x4B, 0x70, 0xF1, 0xDC, 0x71, 0x5C, 0x40, 0xDC, 0x1C,
|
---|
701 | 0xAA, 0x36, 0x79, 0x1D, 0x1E, 0x70, 0x7D, 0x1C, 0x21, 0x7D, 0x23, 0x20, 0xDD, 0x6E, 0x70, 0x70,
|
---|
702 | 0xF1, 0xDD, 0x71, 0xD7, 0x10, 0xDD, 0x1D, 0x36, 0x77, 0xFE, 0xE2, 0x12, 0x40, 0xD1, 0x70, 0x71,
|
---|
703 | 0xF2, 0xF1, 0xD2, 0xBF, 0x70, 0x41, 0x71, 0xFC, 0xF2, 0xF1, 0x91, 0x70, 0x23, 0xEB, 0xFB, 0x72,
|
---|
704 | 0x97, 0x70, 0x70, 0x9E, 0x70, 0x71, 0x81, 0xD1, 0xBF, 0x41, 0x71, 0xF9, 0xA2, 0x62, 0x0F, 0x8A,
|
---|
705 | 0x7A, 0x42, 0x50, 0x98, 0x77, 0xBF, 0x70, 0xA5, 0x7F, 0x8F, 0x71, 0x85, 0x93, 0x71, 0x47, 0x98,
|
---|
706 | 0x73, 0xF1, 0x85, 0x9E, 0x71, 0xE8, 0x70, 0xCD, 0x77, 0xA3, 0x80, 0x62, 0x0C, 0x4A, 0x8A, 0x76,
|
---|
707 | 0x86, 0xE4, 0x78, 0x86, 0xF0, 0x7F, 0x02, 0x89, 0x81, 0x93, 0x71, 0x45, 0x44, 0x98, 0x73, 0x81,
|
---|
708 | 0x9E, 0x71, 0x3E, 0x80, 0xCD, 0x74, 0x42, 0xFF, 0x7C, 0x05, 0x83, 0xE4, 0x78, 0x83, 0x1B, 0x8B,
|
---|
709 | 0x54, 0x8D, 0x39, 0x82, 0xE8, 0x74, 0x45, 0x82, 0x2A, 0x1F, 0x87, 0x43, 0xFF, 0x7C, 0x82, 0xE4,
|
---|
710 | 0x78, 0x82, 0x9C, 0x8F, 0x02, 0x89, 0xD4, 0xE4, 0x78, 0x1B, 0x8B, 0x44, 0xFF, 0x72, 0x0E, 0xE2,
|
---|
711 | 0x12, 0x2A, 0x23, 0xFF, 0x4F, 0x21, 0xFB, 0x23, 0x1C, 0x21, 0x40, 0x24, 0xFF, 0xFA, 0x40, 0xD1,
|
---|
712 | 0x23, 0x1C, 0x71, 0x70, 0xF2, 0xE9, 0xF1, 0xC1, 0x30, 0x1B, 0x91, 0xF1, 0x19, 0x91, 0x4F, 0x24,
|
---|
713 | 0xF6, 0x3F, 0x23, 0x1C, 0xF2, 0xF1, 0x24, 0xFB, 0x19, 0x90, 0xCF, 0x72, 0xB5, 0x48, 0xAD, 0x71,
|
---|
714 | 0x07, 0x05, 0x93, 0x21, 0x44, 0x0D, 0x90, 0x18, 0x3A, 0x11, 0x94, 0x18, 0x19, 0x9F, 0xF6, 0x23,
|
---|
715 | 0x18, 0x2E, 0x9F, 0xE2, 0x12, 0x7F, 0x29, 0x2E, 0x49, 0x21, 0xFB, 0x24, 0x10, 0x11, 0x93, 0x3B,
|
---|
716 | 0x24, 0x10, 0x54, 0x9F, 0xF6, 0x24, 0x10, 0x69, 0x9F, 0x7B, 0x93, 0x33, 0x2B, 0x4E, 0x0D, 0x90,
|
---|
717 | 0x86, 0x94, 0x23, 0x10, 0x62, 0x82, 0x1D, 0x95, 0xA0, 0x62, 0x82, 0x29, 0x91, 0xA3, 0x92, 0x6E,
|
---|
718 | 0x83, 0xD1, 0x70, 0x45, 0xAD, 0x71, 0x04, 0x56, 0x7B, 0x93, 0x29, 0x40, 0x0D, 0x90, 0x14, 0x11,
|
---|
719 | 0x94, 0x14, 0x8F, 0x9F, 0x67, 0xF6, 0x23, 0x14, 0xA4, 0x9F, 0x7B, 0x93, 0x26, 0x45, 0x83, 0x90,
|
---|
720 | 0xC2, 0x4B, 0x94, 0x24, 0x53, 0x9F, 0xA0, 0x90, 0x68, 0x9F, 0x7A, 0x94, 0x23, 0x4A, 0xD7, 0x21,
|
---|
721 | 0xFB, 0x22, 0x10, 0x94, 0x22, 0x18, 0x9F, 0x24, 0xF6, 0xA9, 0x22, 0x2D, 0x9F, 0x7A, 0x94, 0x20,
|
---|
722 | 0x0C, 0x90, 0x24, 0xFF, 0x94, 0x24, 0xB0, 0x07, 0xAF, 0xA0, 0x90, 0x1C, 0xAF, 0x3F, 0x93, 0x28,
|
---|
723 | 0x2E, 0x47, 0x90, 0x24, 0x82, 0x10, 0x94, 0x24, 0x7D, 0xAF, 0xA0, 0x90, 0x92, 0xAA, 0xAC, 0x72,
|
---|
724 | 0x3F, 0x93, 0x4C, 0xDF, 0x21, 0xD4, 0x4D, 0x21, 0xD5, 0x52, 0x00, 0x42, 0x21, 0xFF, 0x14, 0x25,
|
---|
725 | 0x71, 0x28, 0x2B, 0x95, 0xD0, 0x70, 0xF9, 0xA5, 0xA1, 0x12, 0xE2, 0x12, 0x21, 0x4E, 0x21, 0xD8,
|
---|
726 | 0x22, 0x57, 0x40, 0x21, 0xD9, 0x26, 0xB2, 0x18, 0x2C, 0xB0, 0x29, 0x30, 0xBB, 0xFF, 0x23, 0x44,
|
---|
727 | 0x21, 0xD6, 0x23, 0x45, 0x21, 0xD7, 0xEA, 0x26, 0xB2, 0x16, 0x2C, 0xB0, 0x27, 0x30, 0xBB, 0x46,
|
---|
728 | 0x21, 0xD2, 0xAF, 0x24, 0x40, 0x21, 0xD3, 0x26, 0xB2, 0x12, 0x2C, 0xB0, 0x25, 0xDC, 0x99, 0x10,
|
---|
729 | 0x33, 0xB8, 0x25, 0x73, 0x21, 0x94, 0x10, 0x6B, 0x2A, 0xBF, 0x9A, 0xD0, 0x70, 0x41, 0xF4, 0xA7,
|
---|
730 | 0x32, 0xB4, 0x70, 0x5F, 0xC1, 0xC0, 0xA2, 0x21, 0x01, 0x9D, 0xB0, 0x47, 0xA1, 0xB0, 0x7B, 0x28,
|
---|
731 | 0x9F, 0x90, 0xBF, 0x71, 0x6B, 0x27, 0x99, 0xA6, 0xBF, 0xDA, 0x9D, 0xB0, 0x49, 0xA1, 0xB0, 0x25,
|
---|
732 | 0x9E, 0xC1, 0xBF, 0x71, 0x6B, 0x53, 0x24, 0x98, 0xD7, 0xBF, 0x9D, 0xB0, 0x4F, 0xA1, 0xB0, 0x22,
|
---|
733 | 0x42, 0x00, 0xF6, 0xF4, 0xBF, 0x21, 0x97, 0x08, 0xCF, 0x25, 0x73, 0x22, 0x4B, 0xDF, 0x25, 0x71,
|
---|
734 | 0x6C, 0x2F, 0x9C, 0x23, 0xCF, 0x71, 0x6C, 0x79, 0x2E, 0x99, 0x10, 0x3B, 0xCC, 0x00, 0x25, 0x73,
|
---|
735 | 0x46, 0x4F, 0xC0, 0x95, 0x2C, 0x53, 0xCD, 0x22, 0xEC, 0xB0, 0x6C, 0x98, 0x11, 0x3B, 0xCF, 0x22,
|
---|
736 | 0xAD, 0x4A, 0x4F, 0xC0, 0x29, 0x9B, 0x54, 0xCC, 0x40, 0x4F, 0xC0, 0x28, 0xDC, 0x99, 0x12, 0x33,
|
---|
737 | 0xB3, 0x25, 0x73, 0x41, 0x4F, 0xC0, 0x27, 0x94, 0x5A, 0xCA, 0xC9, 0x42, 0x4F, 0xC0, 0x26, 0x92,
|
---|
738 | 0xCA, 0xC9, 0x43, 0x4F, 0xC0, 0x2B, 0x25, 0x90, 0xCA, 0xC9, 0x44, 0x4F, 0xC0, 0x23, 0xF1, 0xB0,
|
---|
739 | 0xCC, 0xC5, 0x4C, 0x98, 0xB4, 0x1D, 0xC0, 0x6C, 0x22, 0x38, 0xC0, 0xCC, 0xC7, 0x21, 0xC4, 0xC1,
|
---|
740 | 0x35, 0x21, 0xDB, 0xCA, 0x21, 0xD6, 0xC1, 0x20, 0x91, 0x29, 0xDA, 0xE8, 0xC0, 0x63, 0x6D, 0x2E,
|
---|
741 | 0x11, 0xD8, 0x9D, 0xB0, 0xFA, 0xC0, 0x6D, 0x2D, 0xB4, 0xC0, 0x3A, 0x14, 0xDC, 0x21, 0x7E, 0xC0,
|
---|
742 | 0x6D, 0x2C, 0x93, 0x29, 0xDA, 0xBB, 0xB0, 0x53, 0x6D, 0x2B, 0xFF, 0xCA, 0x87, 0xD1, 0x29, 0x61,
|
---|
743 | 0xDB, 0x48, 0x5D, 0xD0, 0x49, 0x28, 0x74, 0xD8, 0x97, 0xD4, 0x27, 0x07, 0xC0, 0x14, 0xDC, 0x22,
|
---|
744 | 0x6F, 0xD1, 0x35, 0x26, 0xFF, 0xCA, 0x22, 0x0C, 0xD0, 0x6D, 0x24, 0x42, 0x02, 0xF4, 0xD6, 0x86,
|
---|
745 | 0x94, 0x10, 0x6D, 0x23, 0xA5, 0xB0, 0xF2, 0xD8, 0x87, 0xD1, 0x27, 0xDB, 0x22, 0x78, 0x9A, 0xD1,
|
---|
746 | 0x3A, 0xD9, 0x8C, 0xC5, 0x4D, 0x25, 0x71, 0x6E, 0x52, 0xC1, 0x8A, 0xF2, 0xD8, 0x4E, 0x4F, 0xE0,
|
---|
747 | 0x2E, 0xD6, 0xB0, 0xF2, 0xD8, 0x1D, 0xC0, 0x6E, 0x55, 0x2D, 0xC9, 0xCA, 0x23, 0xC4, 0xC0, 0x6E,
|
---|
748 | 0x8B, 0xDB, 0x23, 0xD6, 0xC0, 0x31, 0x6E, 0x9E, 0xD9, 0x98, 0xB4, 0x7E, 0xC0, 0x6E, 0x29, 0x66,
|
---|
749 | 0xEA, 0x61, 0xE1, 0x09, 0x28, 0x28, 0xDB, 0x0C, 0xD0, 0x6E, 0xDA, 0xCB, 0xB1, 0xE1, 0xEC, 0xCB,
|
---|
750 | 0xB1, 0xE1, 0x60, 0xFE, 0xCB, 0xB1, 0xE1, 0x10, 0xD9, 0x9D, 0xB0, 0xAF, 0xC0, 0x6E, 0x22, 0xC4,
|
---|
751 | 0xDB, 0xA6, 0x4E, 0xC0, 0x6E, 0x21, 0xD7, 0xD8, 0xAF, 0xE3, 0x20, 0xC9, 0xCA, 0x21, 0x9F, 0x4C,
|
---|
752 | 0x25, 0x71, 0x6F, 0x2F, 0x8C, 0xDB, 0x4E, 0xE0, 0x6F, 0x99, 0x2E, 0xEF, 0xDB, 0xD6, 0xC0, 0x6F,
|
---|
753 | 0x2C, 0x02, 0xEB, 0xE8, 0xC0, 0x6F, 0x99, 0x2B, 0x15, 0xEB, 0xBF, 0xD0, 0x6F, 0x2A, 0x28, 0xDA,
|
---|
754 | 0x7E, 0xC0, 0x6F, 0x68, 0x4F, 0xB1, 0xF2, 0xD8, 0x57, 0xF1, 0x28, 0xED, 0xED, 0x6F, 0x27, 0xFF,
|
---|
755 | 0xCA, 0xD5, 0x23, 0x90, 0xF1, 0x25, 0x02, 0xEA, 0x23, 0xFA, 0xC0, 0x6F, 0x24, 0x4A, 0x15, 0xEA,
|
---|
756 | 0x23, 0xB5, 0xF1, 0x23, 0x28, 0xDA, 0xFF, 0xF2, 0x22, 0xDB, 0xCA, 0xEA, 0xFF, 0xF2, 0x21, 0x4E,
|
---|
757 | 0xDA, 0x23, 0x4E, 0xC0, 0x61, 0x2F, 0x2F, 0xAC, 0xF2, 0xFB, 0x57, 0xF0, 0x61, 0x2F, 0x65, 0xEB,
|
---|
758 | 0x23, 0x4E, 0xE0, 0x61, 0x73, 0x2F, 0x2D, 0xBA, 0xFA, 0xFF, 0xF1, 0x61, 0x2F, 0x2C, 0x3E, 0x0B,
|
---|
759 | 0x6E, 0x61, 0xE0, 0x61, 0x2F, 0x2A, 0xF2, 0xFE, 0x61, 0x2F, 0xB5, 0xEB, 0x5D, 0x24, 0xD6, 0xC0,
|
---|
760 | 0x61, 0x2F, 0x28, 0xBA, 0xFA, 0x24, 0xBB, 0xB0, 0xD7, 0x61, 0x2F, 0x27, 0x4E, 0xDA, 0x24, 0xBF,
|
---|
761 | 0xD0, 0x61, 0x2F, 0x9C, 0xF1, 0xFB, 0x56, 0xF1, 0x61, 0x2F, 0x24, 0x66, 0xEB, 0xE8, 0xC0, 0x61,
|
---|
762 | 0x73, 0x2F, 0x23, 0xCA, 0x0B, 0xEC, 0xB0, 0x61, 0x2F, 0x22, 0xDE, 0x0B, 0x4E, 0xAF, 0xC0, 0x61,
|
---|
763 | 0x2F, 0x20, 0x02, 0xE8, 0x98, 0xB4, 0x23, 0xD8, 0x01, 0xB3, 0x2E, 0x2F, 0xDB, 0xCA, 0x73, 0xE1,
|
---|
764 | 0x61, 0x2E, 0x6E, 0xFB, 0x23, 0x62, 0xEC, 0x01, 0x2E, 0x82, 0xC1, 0x7C, 0xE8, 0x28, 0x11, 0x2E,
|
---|
765 | 0x2B, 0x37, 0xFA, 0x2D, 0x23, 0x3C, 0x11, 0x2E, 0x2A, 0x3B, 0xEF, 0x23, 0x69, 0x12, 0xC3, 0xDB,
|
---|
766 | 0x92, 0xBD, 0x13, 0x27, 0x18, 0x0B, 0x69, 0x12, 0x26, 0x8C, 0xEB, 0x69, 0x12, 0x24, 0xD4, 0xC0,
|
---|
767 | 0xB0, 0xC7, 0x1D, 0x23, 0x74, 0xDF, 0x24, 0x14, 0x11, 0x2E, 0x22, 0x5A, 0xED, 0xCA, 0x24, 0x88,
|
---|
768 | 0x01, 0x2E, 0x20, 0x61, 0xDA, 0x24, 0x0C, 0xD0, 0xD7, 0x61, 0x2D, 0x2F, 0x15, 0xEA, 0x24, 0xA0,
|
---|
769 | 0xB0, 0x61, 0x2D, 0x38, 0x68, 0xC1, 0xB9, 0x08, 0x7E, 0xC0, 0x61, 0x2D, 0x2D, 0xED, 0xC8, 0x98,
|
---|
770 | 0xB4, 0x92, 0xD8, 0x01, 0x2D, 0x94, 0xFB, 0xEC, 0x01, 0x2D, 0xA7, 0xFB, 0x28, 0x11, 0x2D, 0x99,
|
---|
771 | 0x29, 0xDB, 0xCA, 0x3C, 0x11, 0x2D, 0x28, 0x4E, 0xDA, 0x4C, 0x01, 0x2D, 0xF5, 0x26, 0x11, 0xDD,
|
---|
772 | 0x43, 0x24, 0x31, 0x60, 0xBD, 0x40, 0xD0, 0xFF, 0x75, 0x21, 0xA0, 0x41, 0x60, 0x8F, 0xD2, 0x75,
|
---|
773 | 0xFF, 0x74, 0x61, 0x2D, 0x23, 0x95, 0xD1, 0x71, 0xA9, 0x7F, 0x71, 0xD0, 0x06, 0x21, 0x20, 0x46,
|
---|
774 | 0xB3, 0xDF, 0x81, 0xFF, 0x72, 0xC0, 0xA2, 0x41, 0xD1, 0x71, 0xC0, 0xA4, 0xDF, 0x21, 0x20, 0x41,
|
---|
775 | 0xD0, 0x70, 0x10, 0x30, 0x41, 0x71, 0xFF, 0xE0, 0x71, 0x30, 0x60, 0x8F, 0x71, 0xE0, 0x40, 0xFE,
|
---|
776 | 0xF4, 0x20, 0xBF, 0x40, 0xD0, 0x72, 0x30, 0xC0, 0xA7, 0xDF, 0x72, 0x30, 0x81, 0x72, 0xE0, 0x1F,
|
---|
777 | 0x30, 0xA4, 0x40, 0xED, 0xB1, 0x3C, 0xB0, 0x20, 0x41, 0x43, 0x30, 0x20, 0x20, 0x00, 0xFF, 0x0D,
|
---|
778 | 0x0B, 0x0A, 0x08, 0x02, 0x09, 0x01, 0x05, 0xFF, 0x0C, 0x0E, 0x03, 0x07, 0x04, 0x0F, 0x06, 0x0B,
|
---|
779 | 0xFF, 0x0C, 0x08, 0x09, 0x0F, 0x04, 0x03, 0x00, 0x0D, 0x7F, 0x01, 0x0A, 0x0E, 0x06, 0x02, 0x07,
|
---|
780 | 0x05, 0x62, 0x30, 0xFF, 0x0B, 0x06, 0x09, 0x00, 0x01, 0x0A, 0x05, 0x0E, 0xFF, 0x0D, 0x0C, 0x02,
|
---|
781 | 0x08, 0x07, 0x0F, 0x05, 0x03, 0xFF, 0x0B, 0x04, 0x0A, 0x09, 0x01, 0x0C, 0x06, 0x0E, 0xFF, 0x08,
|
---|
782 | 0x00, 0x07, 0x02, 0x0D, 0x02, 0x04, 0x0A, 0xFF, 0x0F, 0x0C, 0x01, 0x0E, 0x0B, 0x00, 0x09, 0x03,
|
---|
783 | 0xFF, 0x08, 0x0D, 0x07, 0x06, 0x05, 0x04, 0x03, 0x05, 0xFB, 0x0A, 0x06, 0x95, 0x30, 0x0E, 0x02,
|
---|
784 | 0x0C, 0x0F, 0x0D, 0xFF, 0x07, 0x08, 0x01, 0x05, 0x0A, 0x03, 0x02, 0x07, 0xFF, 0x04, 0x0D, 0x0E,
|
---|
785 | 0x01, 0x08, 0x00, 0x0F, 0x0C, 0xFF, 0x09, 0x06, 0x0B, 0x05, 0x0C, 0x09, 0x03, 0x01, 0xFF, 0x0D,
|
---|
786 | 0x07, 0x04, 0x06, 0x08, 0x0B, 0x02, 0x0A, 0xFF, 0x00, 0x0F, 0x0E, 0x05, 0x0D, 0x09, 0x01, 0x08,
|
---|
787 | 0xFF, 0x06, 0x04, 0x03, 0x0A, 0x07, 0x02, 0x0E, 0x00, 0xFF, 0x0B, 0x0C, 0x0F, 0x71, 0x51, 0x25,
|
---|
788 | 0xFA, 0x31, 0x5F, 0xD1, 0x32, 0xF6, 0x71, 0x54, 0xE0, 0x34, 0x57, 0xE0, 0x34, 0xF5, 0x5A, 0xE0,
|
---|
789 | 0x34, 0x5D, 0xE0, 0x33, 0x70, 0x72, 0x69, 0x6E, 0xFF, 0x74, 0x66, 0x00, 0x69, 0x63, 0x67, 0x5F,
|
---|
790 | 0x72, 0xFF, 0x75, 0x6E, 0x5F, 0x69, 0x6E, 0x5F, 0x74, 0x68, 0xFF, 0x72, 0x65, 0x61, 0x64, 0x73,
|
---|
791 | 0x00, 0x6D, 0x61, 0xFF, 0x6C, 0x6C, 0x6F, 0x63, 0x00, 0x66, 0x72, 0x65, 0xFF, 0x65, 0x00, 0x65,
|
---|
792 | 0x78, 0x69, 0x74, 0x00, 0x73, 0xFF, 0x6E, 0x69, 0x70, 0x70, 0x65, 0x74, 0x5F, 0x64, 0xFF, 0x65,
|
---|
793 | 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0xC7, 0x69, 0x7A, 0x65, 0x30, 0x46, 0x3B, 0x4F, 0x17,
|
---|
794 | 0x44, 0x5F, 0x63, 0x57, 0x6F, 0x75, 0x6E, 0x37, 0x41, 0x63, 0x45, 0x47, 0x64, 0x6D, 0x4A, 0xFF,
|
---|
795 | 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x5F, 0xBF, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x30,
|
---|
796 | 0x48, 0x63, 0x7F, 0x72, 0x79, 0x70, 0x74, 0x00, 0x20, 0x20, 0x82, 0x90, 0xFF, 0x71, 0x21, 0x29,
|
---|
797 | 0x9D, 0x20, 0x21, 0x28, 0x09, 0xFF, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x20, 0xB7, 0x66,
|
---|
798 | 0x75, 0x6E, 0x92, 0x42, 0x20, 0x63, 0x21, 0x40, 0x20, 0xFF, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0A,
|
---|
799 | 0x00, 0x60, 0xFF, 0xBB, 0x40, 0xD4, 0x77, 0x30, 0x40, 0xF9, 0x24, 0xEF, 0xA6, 0x40, 0xD0, 0x78,
|
---|
800 | 0xD7, 0x40, 0x23, 0xA4, 0x74, 0xFF, 0x43, 0xF8, 0xD3, 0x70, 0x43, 0xF8, 0x78, 0x31, 0xFF, 0xFA,
|
---|
801 | 0xD1, 0x73, 0x77, 0x31, 0xFA, 0xD2, 0x71, 0xFF, 0x30, 0x72, 0x30, 0x76, 0x2E, 0x9B, 0xC0, 0x21,
|
---|
802 | 0x5F, 0xA0, 0x71, 0x32, 0x72, 0xE2, 0xE8, 0x43, 0x31, 0xEF, 0x41, 0xD7, 0xE1, 0x70, 0x81, 0xDD,
|
---|
803 | 0x40, 0x70, 0xAE, 0x70, 0x00, 0x74, 0xFD, 0x81, 0xD5, 0x40, 0x74, 0xF9, 0xA2, 0x64, 0x0A, 0xB5,
|
---|
804 | 0xEE, 0xF4, 0x20, 0xBB, 0x40, 0xD3, 0xD6, 0x42, 0xA1, 0x68, 0x47, 0xF7, 0x21, 0xFB, 0xD4, 0xDC,
|
---|
805 | 0x43, 0x22, 0xAA, 0x73, 0x43, 0xD7, 0xF8, 0xD2, 0x72, 0xF0, 0x40, 0xD1, 0xE8, 0x43, 0x30, 0x71,
|
---|
806 | 0xFF, 0x30, 0x76, 0x29, 0x95, 0xC0, 0xA9, 0x74, 0x71, 0x73, 0xE2, 0x76, 0x40, 0x51, 0x0D, 0x57,
|
---|
807 | 0x0A, 0x73, 0x81, 0x28, 0x50, 0xDF, 0x73, 0xF9, 0xA2, 0x63, 0x04, 0x22, 0x50, 0x71, 0x21, 0xFF,
|
---|
808 | 0x30, 0x72, 0xE0, 0x71, 0x21, 0x31, 0x72, 0xE1, 0xFF, 0x71, 0x22, 0x34, 0x73, 0xE0, 0x71, 0x22,
|
---|
809 | 0x35, 0x5B, 0x73, 0xE1, 0x71, 0x50, 0x22, 0x54, 0x71, 0x51, 0x50, 0xF4, 0x20, 0xD5, 0xBC, 0xF8,
|
---|
810 | 0x20, 0x22, 0xE7, 0x30, 0xD1, 0xD7, 0x40, 0x21, 0xA2, 0xD5, 0x75, 0xE8, 0x40, 0x71, 0x0B, 0x53,
|
---|
811 | 0x71, 0x12, 0x51, 0x61, 0x0E, 0xDE, 0xF8, 0x21, 0x50, 0x25, 0xFA, 0xD2, 0x37, 0x51, 0xA2, 0x61,
|
---|
812 | 0x7E, 0xE6, 0xA1, 0xD3, 0x40, 0xD1, 0x75, 0x71, 0x72, 0x0B, 0x50, 0xF5, 0x73, 0xCA, 0x51, 0xE2,
|
---|
813 | 0xAA, 0x51, 0x43, 0xF2, 0xD1, 0x72, 0xF6, 0xAE, 0x52, 0x06, 0xB4, 0xF4, 0x21, 0x75, 0x76, 0x24,
|
---|
814 | 0xFB, 0x7F, 0x43, 0x24, 0xF6, 0xC0, 0x22, 0xAE, 0x24, 0xE7, 0xA0, 0xFD, 0x30, 0x9A, 0x50, 0x47,
|
---|
815 | 0x24, 0xF1, 0xD2, 0x06, 0x75, 0xBF, 0x51, 0xD5, 0x76, 0x51, 0xD6, 0x75, 0xF6, 0x50, 0xD0, 0xF7,
|
---|
816 | 0x76, 0x30, 0xF4, 0xFB, 0x40, 0x70, 0x71, 0xF4, 0x70, 0x9F, 0x23, 0xF2, 0x24, 0xF6, 0x72, 0xED,
|
---|
817 | 0x50, 0x01, 0x80, 0x0F, 0xFB, 0x75, 0xF1, 0x07, 0x61, 0xF1, 0xF4, 0x25, 0xFA, 0xC0, 0xFF, 0xAA,
|
---|
818 | 0x70, 0xA9, 0x75, 0x81, 0xD5, 0x76, 0x81, 0xAF, 0xD6, 0x61, 0x0A, 0xF0, 0x10, 0x30, 0x01, 0x3A,
|
---|
819 | 0x60, 0x71, 0xFF, 0x28, 0x9D, 0xA6, 0x21, 0x23, 0x29, 0xFA, 0x22, 0xFB, 0xF0, 0x00, 0x4A, 0x31,
|
---|
820 | 0x20, 0x60, 0xB0, 0x4A, 0xD6, 0xFF, 0x21, 0x72, 0x21, 0x71, 0x28, 0x9A, 0x41, 0xF2, 0xFF, 0xD7,
|
---|
821 | 0x21, 0x72, 0xD8, 0x10, 0x21, 0x71, 0x23, 0xFF, 0x93, 0x7B, 0x22, 0xC2, 0xC0, 0x21, 0xAB, 0x7B,
|
---|
822 | 0xFF, 0x60, 0xCE, 0xC0, 0x21, 0xAA, 0x7B, 0x60, 0xCD, 0xFE, 0x6C, 0x60, 0x21, 0x71, 0x2E, 0x91,
|
---|
823 | 0x23, 0x2E, 0x4D, 0x9F, 0xF0, 0xE0, 0x60, 0x4F, 0x21, 0x8C, 0x71, 0x80, 0x61, 0x60, 0xF5, 0x4E,
|
---|
824 | 0x85, 0x62, 0x4D, 0x80, 0x61, 0x20, 0x71, 0x21, 0x9D, 0xDF, 0xAE, 0x24, 0xF2, 0x21, 0x32, 0xF6,
|
---|
825 | 0x51, 0xAB, 0x72, 0xDB, 0x42, 0x9E, 0x8D, 0x61, 0x72, 0xEB, 0xA6, 0x65, 0x75, 0xF6, 0xFB, 0x42,
|
---|
826 | 0xD2, 0x9A, 0x65, 0xA4, 0x40, 0x45, 0x95, 0xD2, 0xF3, 0x72, 0xC1, 0xB2, 0x61, 0x4B, 0x61, 0xBF,
|
---|
827 | 0x68, 0xFC, 0xD0, 0xF1, 0x70, 0x30, 0x50, 0x0B, 0x60, 0x49, 0x31, 0x11, 0x00, 0x20, 0x05, 0xBF,
|
---|
828 | 0x60, 0xBF, 0x73, 0x81, 0xD2, 0x73, 0xEC, 0x50, 0x21, 0xFF, 0xA4, 0x73, 0x25, 0xFA, 0x81, 0xD3,
|
---|
829 | 0xF1, 0xA7, 0x7E, 0xE7, 0x61, 0xA8, 0x60, 0x02, 0x73, 0x72, 0xFC, 0x43, 0x30, 0xFD, 0x24, 0x82,
|
---|
830 | 0x90, 0xD4, 0x03, 0x73, 0x51, 0xD3, 0x73, 0xB6, 0x06, 0x61, 0x74, 0x30, 0x12, 0x63, 0x74, 0x31,
|
---|
831 | 0x19, 0x62, 0x61, 0xF7, 0x07, 0x70, 0x2F, 0x29, 0x90, 0x21, 0xAE, 0x70, 0x2F, 0xF7, 0x2F, 0x20,
|
---|
832 | 0x40, 0xE9, 0x60, 0xA0, 0x70, 0x74, 0x32, 0xEF, 0x24, 0xF6, 0xA5, 0x80, 0x07, 0x70, 0x0D, 0x73,
|
---|
833 | 0x83, 0xFF, 0xD3, 0x09, 0x80, 0x73, 0x82, 0xD3, 0x04, 0x80, 0xE8, 0x66, 0x50, 0xFB, 0x63, 0x3A,
|
---|
834 | 0x61, 0x80, 0x52, 0x70, 0x00, 0x00, 0xFF, 0xAF, 0x00, 0x71, 0x22, 0x56, 0x49, 0x62, 0x00, 0x62,
|
---|
835 | 0x70, 0xD0, 0xA9, 0x13, 0x62, 0x71, 0x68, 0x73, 0xD7, 0x67, 0x78, 0xEA, 0x67, 0x78, 0xF1, 0xAA,
|
---|
836 | 0x67, 0x78, 0xF6, 0x67, 0x78, 0x05, 0x62, 0x70, 0x04, 0x62, 0x70, 0xFB, 0x7E, 0x67, 0x74, 0xFB,
|
---|
837 | 0x12, 0x00, 0x00, 0x10, 0x14, 0x68, 0x73, 0xA5, 0xEF, 0xB3, 0x70, 0x23, 0xB7, 0x74, 0x62, 0x71,
|
---|
838 | 0x3C, 0xB7, 0x74, 0x03, 0xAA, 0x62, 0x70, 0x4B, 0xB7, 0x74, 0x1A, 0x62, 0x70, 0x62, 0xB7, 0x74,
|
---|
839 | 0xC0, 0xAA, 0xB3, 0x70, 0x06, 0x62, 0x70, 0x48, 0x9B, 0x78, 0x11, 0x62, 0x70, 0x1D, 0xAA, 0x62,
|
---|
840 | 0x70, 0x29, 0x62, 0x70, 0x35, 0x62, 0x70, 0x44, 0x62, 0x70, 0x49, 0xAA, 0x62, 0x70, 0x51, 0x62,
|
---|
841 | 0x70, 0x55, 0x62, 0x70, 0x5D, 0x62, 0x70, 0x61, 0xAA, 0x62, 0x70, 0x69, 0x62, 0x70, 0x6D, 0x62,
|
---|
842 | 0x70, 0x75, 0x62, 0x70, 0x79, 0xAA, 0x62, 0x70, 0x81, 0x62, 0x70, 0x85, 0x62, 0x70, 0x8D, 0x62,
|
---|
843 | 0x70, 0x94, 0xFE, 0x1F, 0x81, 0x15, 0x00, 0x00, 0x2E, 0x2E, 0x2F, 0x67, 0xFF, 0x65, 0x6E, 0x65,
|
---|
844 | 0x72, 0x61, 0x74, 0x6F, 0x72, 0x7D, 0x2F, 0x6E, 0x40, 0x2E, 0x64, 0x62, 0x67, 0x00
|
---|
845 | };
|
---|