62 #define HT_SHIFT_SIGMA 0
63 #define HT_SHIFT_SCAN 4
64 #define HT_SHIFT_REF 3
65 #define HT_SHIFT_REF_IND 2
68 const static uint8_t
mel_e[13] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5 };
95 return n *
c <=
c - 1;
104 return 1 + (0xffffffffffffffffull /
d);
149 uint32_t new_bits = 32;
151 if (
buffer->bits_left >= 32)
163 if ((
tmp & 0x7FFF000000) > 0x7F8F000000) {
167 if ((
tmp & 0x007FFF0000) > 0x007F8F0000) {
168 tmp = (
tmp & 0x007FFFFFFF) + ((
tmp & 0xFF00000000) >> 1);
171 if ((
tmp & 0x00007FFF00) > 0x00007F8F00) {
172 tmp = (
tmp & 0x00007FFFFF) + ((
tmp & 0xFFFF000000) >> 1);
175 if ((
tmp & 0x0000007FFF) > 0x0000007F8F) {
176 tmp = (
tmp & 0x0000007FFF) + ((
tmp & 0xFFFFFF0000) >> 1);
184 buffer->bits_left += new_bits;
196 while (
buffer->bits_left < 32) {
199 if (
buffer->pos < length) {
231 uint64_t
mask = (1ull << nbits) - 1;
246 uint8_t nbits,
const uint8_t *buf,
250 uint64_t
mask = (1ull << nbits) - 1;
265 uint64_t
mask = (1ull << nbits) - 1;
274 s->pos = Lcup - 2 - Pcup;
275 s->last = Dcup[Lcup - 2];
276 s->tmp = (
s->last) >> 4;
277 s->bits = ((
s->tmp & 7) < 7) ? 4 : 3;
289 const uint8_t *Dcup, uint8_t *sig_pat,
290 uint8_t *res_off, uint8_t *emb_pat_k,
291 uint8_t *emb_pat_1, uint8_t
pos,
292 uint32_t Pcup, uint16_t
context)
301 code_word = vlc_stream->
bit_buf & 0x7f;
310 res_off[
pos] = (uint8_t) (
value & 1);
311 sig_pat[
pos] = (uint8_t) ((
value & 0x00F0) >> 4);
312 emb_pat_k[
pos] = (uint8_t) ((
value & 0x0F00) >> 8);
313 emb_pat_1[
pos] = (uint8_t) ((
value & 0xF000) >> 12);
326 static const uint8_t return_value[8] = { 5, 1, 2, 1, 3, 1, 2, 1 };
327 static const uint8_t drop_bits[8] = { 3, 1, 2, 1, 3, 1, 2, 1 };
337 return return_value[
bits];
346 const uint8_t *refill_array)
348 static const int mask[] = { 1, 31 };
349 static const int drop_bits[] = { 1, 5 };
371 const uint8_t *refill_array)
382 int32_t i_n,
const uint8_t *buf, uint32_t length)
394 int32_t known_1[2],
const uint8_t emb_pat_1[2],
396 uint32_t *mu_n,
const uint8_t *Dcup, uint32_t Pcup,
399 for (
int i = 0;
i < 4;
i++) {
402 known_1[
pos] = (emb_pat_1[
pos] >>
i) & 1;
407 mu_n[n] = (v[
pos][
i] >> 1) + 1;
409 mu_n[n] |= ((uint32_t) (v[
pos][
i] & 1)) << 31;
416 int cond = stream->
pos < length;
418 if (stream->
bits == 0) {
419 stream->
bits = (stream->
tmp == 0xFF) ? 7 : 8;
424 return (stream->
tmp >> stream->
bits) & 1;
429 if (stream->
bits == 0) {
430 int cond = stream->
pos < length;
432 stream->
bits = (stream->
tmp == 0xFF) ? 7 : 8;
436 return (stream->
tmp >> stream->
bits) & 1;
445 if (mel_state->
run == 0 && mel_state->
one == 0) {
449 eval =
mel_e[mel_state->
k];
452 mel_state->
run = 1 << eval;
453 mel_state->
k =
FFMIN(12, mel_state->
k + 1);
458 mel_state->
run = (2 * (mel_state->
run)) +
bit;
461 mel_state->
k =
FFMAX(0, mel_state->
k - 1);
465 if (mel_state->
run > 0) {
489 const uint16_t *vlc_table,
const uint8_t *Dcup,
490 uint8_t *sig_pat, uint8_t *res_off, uint8_t *emb_pat_k,
491 uint8_t *emb_pat_1, uint8_t
pos, uint16_t
context,
492 uint32_t Lcup, uint32_t Pcup)
506 res_off, emb_pat_k, emb_pat_1,
pos, Pcup,
512 const uint8_t *block_states)
514 return (block_states[(x1 + 1) *
stride + (x2 + 1)] >> shift_by) & 1;
519 int value, uint8_t *block_states)
521 block_states[(x1 + 1) *
stride + (x2 + 1)] |=
value;
529 StateVars *mag_sgn_stream,
const uint8_t *Dcup,
530 uint32_t Lcup, uint32_t Pcup, uint8_t pLSB,
532 int32_t *sample_buf, uint8_t *block_states)
536 uint16_t context1, context2;
539 uint8_t sig_pat[2] = { 0 };
540 uint8_t res_off[2] = { 0 };
541 uint8_t emb_pat_k[2] = { 0 };
542 uint8_t emb_pat_1[2] = { 0 };
543 uint8_t gamma[2] = { 0 };
545 uint8_t E_n[2] = { 0 };
546 uint8_t E_ne[2] = { 0 };
547 uint8_t E_nw[2] = { 0 };
548 uint8_t E_nf[2] = { 0 };
550 uint8_t max_e[2] = { 0 };
551 uint8_t u_pfx[2] = { 0 };
552 uint8_t u_sfx[2] = { 0 };
553 uint8_t u_ext[2] = { 0 };
563 uint8_t kappa[2] = { 1, 1 };
571 uint8_t *sigma, *sigma_n, *
E;
574 const uint8_t *vlc_buf = Dcup + Pcup;
582 int maxbp = cblk->
zbp + 2;
585 const uint16_t is_border_x =
width % 2;
586 const uint16_t is_border_y =
height % 2;
591 size_t buf_size = 4 * quad_width * quad_height;
597 sigma_n =
av_calloc(buf_size,
sizeof(uint8_t));
599 mu_n =
av_calloc(buf_size,
sizeof(uint32_t));
601 if (!sigma_n || !
E || !mu_n) {
609 while (q < quad_width - 1) {
619 for (
int i = 0;
i < 4;
i++)
620 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
634 for (
int i = 0;
i < 4;
i++)
635 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
639 context |= sigma_n[4 * q2 + 1];
640 context += sigma_n[4 * q2 + 2] << 1;
641 context += sigma_n[4 * q2 + 3] << 2;
683 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
684 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
697 for (
int i = 0;
i < 4;
i++) {
703 E, mu_n, Dcup, Pcup, pLSB);
706 E, mu_n, Dcup, Pcup, pLSB);
711 if (quad_width % 2 == 1) {
720 for (
int i = 0;
i < 4;
i++)
721 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
725 if (res_off[
J2K_Q1] == 1) {
738 for (
int i = 0;
i < 4;
i++)
742 E, mu_n, Dcup, Pcup, pLSB);
761 for (
int row = 1; row < quad_height; row++) {
762 while ((q - (row * quad_width)) < quad_width - 1 && q < (quad_height * quad_width)) {
765 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
766 context1 += sigma_n[4 * (
q1 - quad_width) + 3] << 2;
769 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
770 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
773 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
777 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
782 for (
int i = 0;
i < 4;
i++)
783 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
785 context2 = sigma_n[4 * (q2 - quad_width) + 1];
786 context2 += sigma_n[4 * (q2 - quad_width) + 3] << 2;
789 context2 |= sigma_n[4 * (q2 - quad_width) - 1];
790 context2 += (sigma_n[4 * q2 - 1] | sigma_n[4 * q2 - 2]) << 1;
793 context2 |= sigma_n[4 * (q2 - quad_width) + 5] << 2;
797 emb_pat_k, emb_pat_1,
J2K_Q2, context2, Lcup,
802 for (
int i = 0;
i < 4;
i++)
803 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
823 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
824 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
836 if (sp == 0 || sp == 1 || sp == 2 || sp == 4 || sp == 8)
843 if (sp == 0 || sp == 1 || sp == 2 || sp == 4 || sp == 8)
846 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
847 E_n[
J2K_Q2] =
E[4 * (q2 - quad_width) + 1];
849 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
850 E_ne[
J2K_Q2] =
E[4 * (q2 - quad_width) + 3];
871 for (
int i = 0;
i < 4;
i++) {
876 E, mu_n, Dcup, Pcup, pLSB);
879 E, mu_n, Dcup, Pcup, pLSB);
884 if (quad_width % 2 == 1) {
888 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
889 context1 += (sigma_n[4 * (
q1 - quad_width) + 3] << 2);
892 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
893 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
896 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
900 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
904 for (
int i = 0;
i < 4;
i++)
905 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
910 if (res_off[
J2K_Q1] == 1) {
922 if (sp == 0 || sp == 1 || sp == 2 || sp == 4 || sp == 8)
925 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
927 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
943 for (
int i = 0;
i < 4;
i++)
947 E, mu_n, Dcup, Pcup, pLSB);
953 for (
int y = 0; y < quad_height; y++) {
954 for (
int x = 0; x < quad_width; x++) {
966 x1 = y != quad_height - 1 || is_border_y == 0;
972 x2 = x != quad_width - 1 || is_border_x == 0;
979 sample_buf[(j2 + 1) + (j1 + 1) *
stride] = ((
int32_t)*mu) * x3;
994 const uint32_t mbr_info, uint8_t causal_cond,
995 uint8_t *block_states,
int stride)
1034 int32_t *sample_buf, uint8_t *block_states,
1035 uint8_t *magref_segment, uint32_t magref_length)
1037 for (
int j = j_s; j < j_s +
width; j++) {
1038 uint32_t mbr_info = 0;
1039 for (
int i = i_s;
i < i_s +
height;
i++) {
1040 int modify_state,
cond;
1042 uint8_t causal_cond =
i != (i_s +
height - 1);
1064 const int stride, uint8_t *magref_segment,
1065 uint32_t magref_length, uint8_t pLSB,
1066 int32_t *sample_buf, uint8_t *block_states)
1070 const uint16_t num_v_stripe =
height / 4;
1071 const uint16_t num_h_stripe =
width / 4;
1076 uint16_t
i = 0, j = 0;
1080 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1082 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1084 pLSB, sample_buf, block_states, magref_segment,
1088 last_width =
width % 4;
1091 pLSB, sample_buf, block_states, magref_segment,
1099 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1101 pLSB, sample_buf, block_states, magref_segment,
1105 last_width =
width % 4;
1108 pLSB, sample_buf, block_states, magref_segment,
1117 uint8_t *magref_segment,uint32_t magref_length,
1118 uint8_t pLSB,
int32_t *sample_buf, uint8_t *block_states)
1122 const uint16_t num_v_stripe = block_height / 4;
1124 uint16_t i_start = 0;
1129 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1130 for (
int j = 0; j <
width; j++) {
1131 for (
int i = i_start;
i < i_start +
height;
i++) {
1136 sp = &sample_buf[j +
i *
stride];
1145 height = block_height % 4;
1146 for (
int j = 0; j <
width; j++) {
1147 for (
int i = i_start;
i < i_start +
height;
i++) {
1148 sp = &sample_buf[j +
i *
stride];
1161 int width,
int height,
int magp, uint8_t roi_shift)
1177 uint8_t empty_passes;
1190 uint8_t *block_states =
NULL;
1196 const int quad_buf_width =
width + 4;
1197 const int quad_buf_height =
height + 4;
1215 else if (cblk->
length == 0)
1218 empty_passes = p0 * 3;
1219 z_blk = cblk->
npasses - empty_passes;
1229 "Cleanup pass length must be at least 2 bytes in length\n");
1233 Dref = cblk->
data + Lcup;
1234 S_blk = p0 + cblk->
zbp;
1237 Scup = (Dcup[Lcup - 1] << 4) + (Dcup[Lcup - 2] & 0x0F);
1239 if (Scup < 2 || Scup > Lcup || Scup > 4079) {
1248 Dcup[Lcup - 1] = 0xFF;
1249 Dcup[Lcup - 2] |= 0x0F;
1267 block_states =
av_calloc(quad_buf_width * quad_buf_height,
sizeof(uint8_t));
1269 if (!sample_buf || !block_states) {
1274 &mag_sgn, Dcup, Lcup, Pcup, pLSB,
width,
1275 height, quad_buf_width, sample_buf, block_states)) < 0) {
1282 pLSB - 1, sample_buf, block_states);
1292 pLSB - 1, sample_buf, block_states)) < 0)
1299 for (
int y = 0; y <
height; y++) {
1300 for (
int x = 0; x <
width; x++) {
1301 n = x + (y * t1->
stride);
1302 val = sample_buf[x + (y * quad_buf_width)];
1320 0x0016, 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086,
1321 0x003A, 0x0026, 0x00DE, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A,
1322 0x0046, 0x007D, 0x0086, 0x01FD, 0x0026, 0x007E, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026,
1323 0x111D, 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x00EE, 0x0016, 0x00CA, 0x0046, 0x00BD,
1324 0x0086, 0x005A, 0x0026, 0x11FF, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x2AAF, 0x0016,
1325 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086, 0x003A,
1326 0x0026, 0x44EF, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A, 0x0046,
1327 0x007D, 0x0086, 0x01FD, 0x0026, 0x00BE, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026, 0x111D,
1328 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x4CCF, 0x0016, 0x00CA, 0x0046, 0x00BD, 0x0086,
1329 0x005A, 0x0026, 0x00FE, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x006F, 0x0002, 0x0088,
1330 0x0002, 0x005C, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002,
1331 0x007E, 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x888F, 0x0002, 0x0028, 0x0002, 0x00FE,
1332 0x0002, 0x003A, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00BE, 0x0002,
1333 0x0028, 0x0002, 0x00BF, 0x0002, 0x004A, 0x0002, 0x006E, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018,
1334 0x0002, 0x444F, 0x0002, 0x0028, 0x0002, 0x00EE, 0x0002, 0x003A, 0x0002, 0x113F, 0x0002, 0x0088, 0x0002,
1335 0x005C, 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002, 0x006F,
1336 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x009F, 0x0002, 0x0028, 0x0002, 0x00EF, 0x0002,
1337 0x003A, 0x0002, 0x233F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00AF, 0x0002, 0x0028,
1338 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x005F, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018, 0x0002,
1339 0x007F, 0x0002, 0x0028, 0x0002, 0x00DF, 0x0002, 0x003A, 0x0002, 0x111F, 0x0002, 0x0028, 0x0002, 0x005C,
1340 0x0002, 0x008A, 0x0002, 0x00BF, 0x0002, 0x0018, 0x0002, 0x00FE, 0x0002, 0x00CC, 0x0002, 0x007E, 0x0002,
1341 0x0028, 0x0002, 0x8FFF, 0x0002, 0x004A, 0x0002, 0x007F, 0x0002, 0x0018, 0x0002, 0x00DF, 0x0002, 0x00AC,
1342 0x0002, 0x133F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x00BE, 0x0002, 0x0018, 0x0002,
1343 0x44EF, 0x0002, 0x2AAD, 0x0002, 0x006E, 0x0002, 0x0028, 0x0002, 0x15FF, 0x0002, 0x004A, 0x0002, 0x009E,
1344 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x003C, 0x0002, 0x223F, 0x0002, 0x0028, 0x0002, 0x005C, 0x0002,
1345 0x008A, 0x0002, 0x2BBF, 0x0002, 0x0018, 0x0002, 0x04EF, 0x0002, 0x00CC, 0x0002, 0x006F, 0x0002, 0x0028,
1346 0x0002, 0x27FF, 0x0002, 0x004A, 0x0002, 0x009F, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x00AC, 0x0002,
1347 0x444F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x8AAF, 0x0002, 0x0018, 0x0002, 0x00EE,
1348 0x0002, 0x2AAD, 0x0002, 0x005F, 0x0002, 0x0028, 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x888F, 0x0002,
1349 0x0018, 0x0002, 0xAAAF, 0x0002, 0x003C, 0x0002, 0x111F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC,
1350 0x008A, 0x66FF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x8AAF, 0x0004, 0x00FC, 0x0028,
1351 0x133D, 0x0004, 0x00AC, 0x004A, 0x3BBF, 0x0004, 0x2BBD, 0x0018, 0x5FFF, 0x0004, 0x006C, 0x157D, 0x455F,
1352 0x0004, 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x44EF, 0x0004, 0x00CC, 0x0018, 0x4FFF, 0x0004,
1353 0x007C, 0x003A, 0x447F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x00DE, 0x0004, 0x88BD,
1354 0x0018, 0xAFFF, 0x0004, 0x115D, 0x1FFD, 0x444F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC, 0x008A,
1355 0x8CEF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x888F, 0x0004, 0x00FC, 0x0028, 0x133D,
1356 0x0004, 0x00AC, 0x004A, 0x44DF, 0x0004, 0x2BBD, 0x0018, 0x8AFF, 0x0004, 0x006C, 0x157D, 0x006F, 0x0004,
1357 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x00EE, 0x0004, 0x00CC, 0x0018, 0x2EEF, 0x0004, 0x007C,
1358 0x003A, 0x277F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x1BBF, 0x0004, 0x88BD, 0x0018,
1359 0x37FF, 0x0004, 0x115D, 0x1FFD, 0x333F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x4CCF,
1360 0x0002, 0x0048, 0x0002, 0x23FF, 0x0002, 0x001A, 0x0002, 0x888F, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002,
1361 0x002A, 0x0002, 0x00AF, 0x0002, 0x0048, 0x0002, 0x22EF, 0x0002, 0x00AC, 0x0002, 0x005F, 0x0002, 0x0088,
1362 0x0002, 0x444D, 0x0002, 0x00CA, 0x0002, 0xCCCF, 0x0002, 0x0048, 0x0002, 0x00FE, 0x0002, 0x001A, 0x0002,
1363 0x006F, 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009F, 0x0002, 0x0048, 0x0002, 0x00DF,
1364 0x0002, 0x03FD, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x8CCF, 0x0002,
1365 0x0048, 0x0002, 0x11FF, 0x0002, 0x001A, 0x0002, 0x007E, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002, 0x002A,
1366 0x0002, 0x007F, 0x0002, 0x0048, 0x0002, 0x00EE, 0x0002, 0x00AC, 0x0002, 0x003E, 0x0002, 0x0088, 0x0002,
1367 0x444D, 0x0002, 0x00CA, 0x0002, 0x00BE, 0x0002, 0x0048, 0x0002, 0x00BF, 0x0002, 0x001A, 0x0002, 0x003F,
1368 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009E, 0x0002, 0x0048, 0x0002, 0x00DE, 0x0002,
1369 0x03FD, 0x0002, 0x111F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0x3FFF, 0x0004, 0xCFFD,
1370 0x002A, 0x003D, 0x0004, 0x00BC, 0x005A, 0x8DDF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A,
1371 0x99FF, 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x009F, 0x0004, 0x2FFD, 0x0048, 0x007C,
1372 0x0004, 0x44CD, 0x00CA, 0x67FF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x8CCF, 0x0004,
1373 0x4FFD, 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x4EEF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C,
1374 0x001A, 0x222F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0xAFFF, 0x0004, 0xCFFD, 0x002A,
1375 0x003D, 0x0004, 0x00BC, 0x005A, 0x11BF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A, 0x22EF,
1376 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x227F, 0x0004, 0x2FFD, 0x0048, 0x007C, 0x0004,
1377 0x44CD, 0x00CA, 0x5DFF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x006F, 0x0004, 0x4FFD,
1378 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x11DF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C, 0x001A,
1379 0x155F, 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x4DDF, 0x0006, 0x2AAD, 0x005A, 0x67FF,
1380 0x0028, 0x223D, 0x00BC, 0xAAAF, 0x0006, 0x00EC, 0x0018, 0x5FFF, 0x0048, 0x006C, 0x008A, 0xCCCF, 0x0006,
1381 0x009D, 0x00CA, 0x44EF, 0x0028, 0x003C, 0x8FFD, 0x137F, 0x0006, 0x8EED, 0x0018, 0x1FFF, 0x0048, 0x007C,
1382 0x00AA, 0x4CCF, 0x0006, 0x227D, 0x005A, 0x1DDF, 0x0028, 0x444D, 0x4FFD, 0x155F, 0x0006, 0x00DC, 0x0018,
1383 0x2EEF, 0x0048, 0x445D, 0x008A, 0x22BF, 0x0006, 0x009C, 0x00CA, 0x8CDF, 0x0028, 0x222D, 0x2FFD, 0x226F,
1384 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x1BBF, 0x0006, 0x2AAD, 0x005A, 0x33FF, 0x0028,
1385 0x223D, 0x00BC, 0x8AAF, 0x0006, 0x00EC, 0x0018, 0x9BFF, 0x0048, 0x006C, 0x008A, 0x8ABF, 0x0006, 0x009D,
1386 0x00CA, 0x4EEF, 0x0028, 0x003C, 0x8FFD, 0x466F, 0x0006, 0x8EED, 0x0018, 0xCFFF, 0x0048, 0x007C, 0x00AA,
1387 0x8CCF, 0x0006, 0x227D, 0x005A, 0xAEEF, 0x0028, 0x444D, 0x4FFD, 0x477F, 0x0006, 0x00DC, 0x0018, 0xAFFF,
1388 0x0048, 0x445D, 0x008A, 0x2BBF, 0x0006, 0x009C, 0x00CA, 0x44DF, 0x0028, 0x222D, 0x2FFD, 0x133F, 0x00F6,
1389 0xAFFD, 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x11DF, 0x00F6, 0x45DD, 0x2FFB, 0x4EEF, 0x00DA, 0x177D,
1390 0xCFFD, 0x377F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x1BBF, 0x00F6, 0x00CD, 0x00BA,
1391 0x8DDF, 0x4FFB, 0x006C, 0x9BFD, 0x455F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x009F,
1392 0x00F6, 0x00AD, 0x2FFB, 0x7FFF, 0x00DA, 0x004C, 0x5FFD, 0x477F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008,
1393 0x008C, 0x005A, 0x888F, 0x00F6, 0x00CC, 0x00BA, 0x2EEF, 0x4FFB, 0x115D, 0x8AED, 0x113F, 0x00F6, 0xAFFD,
1394 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x1DDF, 0x00F6, 0x45DD, 0x2FFB, 0xBFFF, 0x00DA, 0x177D, 0xCFFD,
1395 0x447F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x277F, 0x00F6, 0x00CD, 0x00BA, 0x22EF,
1396 0x4FFB, 0x006C, 0x9BFD, 0x444F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x11BF, 0x00F6,
1397 0x00AD, 0x2FFB, 0xFFFF, 0x00DA, 0x004C, 0x5FFD, 0x233F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008, 0x008C,
1398 0x005A, 0x006F, 0x00F6, 0x00CC, 0x00BA, 0x8BBF, 0x4FFB, 0x115D, 0x8AED, 0x222F};
1401 0x0026, 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x8DDF, 0x0026, 0x01BD, 0x0046, 0x5FFF, 0x0086,
1402 0x027D, 0x005A, 0x155F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0xCCCF, 0x0026, 0x2EFD,
1403 0x0046, 0x99FF, 0x0086, 0x009C, 0x00CA, 0x133F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018,
1404 0x11DF, 0x0026, 0x4FFD, 0x0046, 0xCFFF, 0x0086, 0x009D, 0x005A, 0x007E, 0x0026, 0x003A, 0x0046, 0x1FFF,
1405 0x0086, 0x88AD, 0x0018, 0x00BE, 0x0026, 0x8FFD, 0x0046, 0x4EEF, 0x0086, 0x888D, 0x00CA, 0x111F, 0x0026,
1406 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x45DF, 0x0026, 0x01BD, 0x0046, 0x22EF, 0x0086, 0x027D,
1407 0x005A, 0x227F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0x11BF, 0x0026, 0x2EFD, 0x0046,
1408 0x00FE, 0x0086, 0x009C, 0x00CA, 0x223F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018, 0x00DE,
1409 0x0026, 0x4FFD, 0x0046, 0xABFF, 0x0086, 0x009D, 0x005A, 0x006F, 0x0026, 0x003A, 0x0046, 0x6EFF, 0x0086,
1410 0x88AD, 0x0018, 0x2AAF, 0x0026, 0x8FFD, 0x0046, 0x00EE, 0x0086, 0x888D, 0x00CA, 0x222F, 0x0004, 0x00CA,
1411 0x0088, 0x027D, 0x0004, 0x4CCD, 0x0028, 0x00FE, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018,
1412 0x00DE, 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x11DF, 0x0004, 0x8AED, 0x0048, 0x003C,
1413 0x0004, 0x888D, 0x0018, 0x111F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x88FF, 0x0004,
1414 0x8BFD, 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x00BE, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC,
1415 0x0028, 0x00EE, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x007E, 0x0004, 0x00CA, 0x0088,
1416 0x027D, 0x0004, 0x4CCD, 0x0028, 0x1FFF, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018, 0x11BF,
1417 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x22EF, 0x0004, 0x8AED, 0x0048, 0x003C, 0x0004,
1418 0x888D, 0x0018, 0x227F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x4EEF, 0x0004, 0x8BFD,
1419 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x2AAF, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC, 0x0028,
1420 0x8DDF, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x155F, 0x0004, 0x005A, 0x0088, 0x006C,
1421 0x0004, 0x88DD, 0x0028, 0x23FF, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x00BE, 0x0004,
1422 0x137D, 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x00DE, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D,
1423 0x0018, 0x007E, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x00EE, 0x0004, 0x1FFD, 0x0048,
1424 0x003C, 0x0004, 0x00AC, 0x0018, 0x555F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x477F,
1425 0x0004, 0x4CDD, 0x0048, 0x8FFF, 0x0004, 0x009C, 0x0018, 0x222F, 0x0004, 0x005A, 0x0088, 0x006C, 0x0004,
1426 0x88DD, 0x0028, 0x00FE, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x888F, 0x0004, 0x137D,
1427 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x8CCF, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D, 0x0018,
1428 0x006F, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x1DDF, 0x0004, 0x1FFD, 0x0048, 0x003C,
1429 0x0004, 0x00AC, 0x0018, 0x227F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x22BF, 0x0004,
1430 0x4CDD, 0x0048, 0x22EF, 0x0004, 0x009C, 0x0018, 0x233F, 0x0006, 0x4DDD, 0x4FFB, 0xCFFF, 0x0018, 0x113D,
1431 0x005A, 0x888F, 0x0006, 0x23BD, 0x008A, 0x00EE, 0x002A, 0x155D, 0xAAFD, 0x277F, 0x0006, 0x44CD, 0x8FFB,
1432 0x44EF, 0x0018, 0x467D, 0x004A, 0x2AAF, 0x0006, 0x00AC, 0x555B, 0x99DF, 0x1FFB, 0x003C, 0x5FFD, 0x266F,
1433 0x0006, 0x1DDD, 0x4FFB, 0x6EFF, 0x0018, 0x177D, 0x005A, 0x1BBF, 0x0006, 0x88AD, 0x008A, 0x5DDF, 0x002A,
1434 0x444D, 0x2FFD, 0x667F, 0x0006, 0x00CC, 0x8FFB, 0x2EEF, 0x0018, 0x455D, 0x004A, 0x119F, 0x0006, 0x009C,
1435 0x555B, 0x8CCF, 0x1FFB, 0x111D, 0x8CED, 0x006E, 0x0006, 0x4DDD, 0x4FFB, 0x3FFF, 0x0018, 0x113D, 0x005A,
1436 0x11BF, 0x0006, 0x23BD, 0x008A, 0x8DDF, 0x002A, 0x155D, 0xAAFD, 0x222F, 0x0006, 0x44CD, 0x8FFB, 0x00FE,
1437 0x0018, 0x467D, 0x004A, 0x899F, 0x0006, 0x00AC, 0x555B, 0x00DE, 0x1FFB, 0x003C, 0x5FFD, 0x446F, 0x0006,
1438 0x1DDD, 0x4FFB, 0x9BFF, 0x0018, 0x177D, 0x005A, 0x00BE, 0x0006, 0x88AD, 0x008A, 0xCDDF, 0x002A, 0x444D,
1439 0x2FFD, 0x007E, 0x0006, 0x00CC, 0x8FFB, 0x4EEF, 0x0018, 0x455D, 0x004A, 0x377F, 0x0006, 0x009C, 0x555B,
1440 0x8BBF, 0x1FFB, 0x111D, 0x8CED, 0x233F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x11DF,
1441 0x0004, 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x2BBF, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004,
1442 0x00CC, 0x0028, 0x00EE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x007E, 0x0004, 0x00AA,
1443 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x00FE, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018,
1444 0xAAAF, 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x4CCF, 0x0004, 0x44ED, 0x0048, 0x4FFF,
1445 0x0004, 0x223D, 0x0018, 0x111F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x99FF, 0x0004,
1446 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x00BE, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004, 0x00CC,
1447 0x0028, 0x00DE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x444F, 0x0004, 0x00AA, 0x0088,
1448 0x006D, 0x0004, 0x88CD, 0x0028, 0x2EEF, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018, 0x447F,
1449 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x009F, 0x0004, 0x44ED, 0x0048, 0x67FF, 0x0004,
1450 0x223D, 0x0018, 0x133F, 0x0006, 0x00CC, 0x008A, 0x9DFF, 0x2FFB, 0x467D, 0x1FFD, 0x99BF, 0x0006, 0x2AAD,
1451 0x002A, 0x66EF, 0x4FFB, 0x005C, 0x2EED, 0x377F, 0x0006, 0x89BD, 0x004A, 0x00FE, 0x8FFB, 0x006C, 0x67FD,
1452 0x889F, 0x0006, 0x888D, 0x001A, 0x5DDF, 0x00AA, 0x222D, 0x89DD, 0x444F, 0x0006, 0x2BBD, 0x008A, 0xCFFF,
1453 0x2FFB, 0x226D, 0x009C, 0x00BE, 0x0006, 0xAAAD, 0x002A, 0x1DDF, 0x4FFB, 0x003C, 0x4DDD, 0x466F, 0x0006,
1454 0x8AAD, 0x004A, 0xAEEF, 0x8FFB, 0x445D, 0x8EED, 0x177F, 0x0006, 0x233D, 0x001A, 0x4CCF, 0x00AA, 0xAFFF,
1455 0x88CD, 0x133F, 0x0006, 0x00CC, 0x008A, 0x77FF, 0x2FFB, 0x467D, 0x1FFD, 0x3BBF, 0x0006, 0x2AAD, 0x002A,
1456 0x00EE, 0x4FFB, 0x005C, 0x2EED, 0x007E, 0x0006, 0x89BD, 0x004A, 0x4EEF, 0x8FFB, 0x006C, 0x67FD, 0x667F,
1457 0x0006, 0x888D, 0x001A, 0x00DE, 0x00AA, 0x222D, 0x89DD, 0x333F, 0x0006, 0x2BBD, 0x008A, 0x57FF, 0x2FFB,
1458 0x226D, 0x009C, 0x199F, 0x0006, 0xAAAD, 0x002A, 0x99DF, 0x4FFB, 0x003C, 0x4DDD, 0x155F, 0x0006, 0x8AAD,
1459 0x004A, 0xCEEF, 0x8FFB, 0x445D, 0x8EED, 0x277F, 0x0006, 0x233D, 0x001A, 0x1BBF, 0x00AA, 0x3FFF, 0x88CD,
1460 0x111F, 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0xCCCF, 0x0006, 0x19BD, 0x004A, 0x22EF,
1461 0x002A, 0x222D, 0x3FFD, 0x888F, 0x0006, 0x00CC, 0x008A, 0x00FE, 0x0018, 0x115D, 0xCFFD, 0x8AAF, 0x0006,
1462 0x00AC, 0x003A, 0x8CDF, 0x1FFB, 0x133D, 0x66FD, 0x466F, 0x0006, 0x8CCD, 0x2FFB, 0x5FFF, 0x0018, 0x006C,
1463 0x4FFD, 0xABBF, 0x0006, 0x22AD, 0x004A, 0x00EE, 0x002A, 0x233D, 0xAEFD, 0x377F, 0x0006, 0x2BBD, 0x008A,
1464 0x55DF, 0x0018, 0x005C, 0x177D, 0x119F, 0x0006, 0x009C, 0x003A, 0x4CCF, 0x1FFB, 0x333D, 0x8EED, 0x444F,
1465 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0x99BF, 0x0006, 0x19BD, 0x004A, 0x2EEF, 0x002A,
1466 0x222D, 0x3FFD, 0x667F, 0x0006, 0x00CC, 0x008A, 0x4EEF, 0x0018, 0x115D, 0xCFFD, 0x899F, 0x0006, 0x00AC,
1467 0x003A, 0x00DE, 0x1FFB, 0x133D, 0x66FD, 0x226F, 0x0006, 0x8CCD, 0x2FFB, 0x9BFF, 0x0018, 0x006C, 0x4FFD,
1468 0x00BE, 0x0006, 0x22AD, 0x004A, 0x1DDF, 0x002A, 0x233D, 0xAEFD, 0x007E, 0x0006, 0x2BBD, 0x008A, 0xCEEF,
1469 0x0018, 0x005C, 0x177D, 0x277F, 0x0006, 0x009C, 0x003A, 0x8BBF, 0x1FFB, 0x333D, 0x8EED, 0x455F, 0x1FF9,
1470 0x1DDD, 0xAFFB, 0x00DE, 0x8FF9, 0x001C, 0xFFFB, 0x477F, 0x4FF9, 0x177D, 0x3FFB, 0x3BBF, 0x2FF9, 0xAEEF,
1471 0x8EED, 0x444F, 0x1FF9, 0x22AD, 0x000A, 0x8BBF, 0x8FF9, 0x00FE, 0xCFFD, 0x007E, 0x4FF9, 0x115D, 0x5FFB,
1472 0x577F, 0x2FF9, 0x8DDF, 0x2EED, 0x333F, 0x1FF9, 0x2BBD, 0xAFFB, 0x88CF, 0x8FF9, 0xBFFF, 0xFFFB, 0x377F,
1473 0x4FF9, 0x006D, 0x3FFB, 0x00BE, 0x2FF9, 0x66EF, 0x9FFD, 0x133F, 0x1FF9, 0x009D, 0x000A, 0xABBF, 0x8FF9,
1474 0xDFFF, 0x6FFD, 0x006E, 0x4FF9, 0x002C, 0x5FFB, 0x888F, 0x2FF9, 0xCDDF, 0x4DDD, 0x222F, 0x1FF9, 0x1DDD,
1475 0xAFFB, 0x4CCF, 0x8FF9, 0x001C, 0xFFFB, 0x277F, 0x4FF9, 0x177D, 0x3FFB, 0x99BF, 0x2FF9, 0xCEEF, 0x8EED,
1476 0x004E, 0x1FF9, 0x22AD, 0x000A, 0x00AE, 0x8FF9, 0x7FFF, 0xCFFD, 0x005E, 0x4FF9, 0x115D, 0x5FFB, 0x009E,
1477 0x2FF9, 0x5DDF, 0x2EED, 0x003E, 0x1FF9, 0x2BBD, 0xAFFB, 0x00CE, 0x8FF9, 0xEFFF, 0xFFFB, 0x667F, 0x4FF9,
1478 0x006D, 0x3FFB, 0x8AAF, 0x2FF9, 0x00EE, 0x9FFD, 0x233F, 0x1FF9, 0x009D, 0x000A, 0x1BBF, 0x8FF9, 0x4EEF,
1479 0x6FFD, 0x455F, 0x4FF9, 0x002C, 0x5FFB, 0x008E, 0x2FF9, 0x99DF, 0x4DDD, 0x111F};