1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 01:02:24 +00:00

Bidi stability work. I _think_ I've now removed all the failures of

array bounds checking.

[originally from svn r4951]
This commit is contained in:
Simon Tatham 2004-12-07 18:10:09 +00:00
parent 30e94b6a5c
commit 52eb87aed2
2 changed files with 280 additions and 322 deletions

View File

@ -31,6 +31,8 @@
#include "minibidi.h" #include "minibidi.h"
#define lenof(x) ( sizeof((x)) / sizeof(*(x)) )
/* /*
* Flips the text buffer, according to max level, and * Flips the text buffer, according to max level, and
* all higher levels * all higher levels
@ -110,17 +112,25 @@ unsigned char setOverrideBits(unsigned char level, unsigned char override)
return level; return level;
} }
/* Dont remember what this was used for :-) */ /*
unsigned char getPreviousLevel(unsigned char* level, int from) * Find the most recent run of the same value in `level', and
* return the value _before_ it. Used to process U+202C POP
* DIRECTIONAL FORMATTING.
*/
int getPreviousLevel(unsigned char* level, int from)
{ {
unsigned char current; if (from > 0) {
from--; unsigned char current = level[--from];
current = level[from];
while(from>0 && level[from] == current) while (from >= 0 && level[from] == current)
{ from--;
from--;
} if (from >= 0)
return level[++from]; return level[from];
return -1;
} else
return -1;
} }
/* /*
@ -151,19 +161,16 @@ unsigned char leastGreaterEven(unsigned char x)
*/ */
unsigned char getRLE(wchar_t ch) unsigned char getRLE(wchar_t ch)
{ {
int offset, i, freq; int offset, i;
freq = offset = 0; offset = 0;
for(i=0; i<0xFFFF; i++) for(i=0; i<lenof(RLE_table); i++)
{ {
freq = ((RLENode*)RLE_table)[i].f; offset += RLE_table[i].f;
offset += freq; if(ch < offset)
if(offset == ch) return RLE_table[i].d;
return ((RLENode*)RLE_table)[i].d;
else if(offset > ch)
return ((RLENode*)RLE_table)[i-1].d;
} }
/* this is here to stop compiler nagging */ /* anything beyond the end of the table is unknown */
return ON; return ON;
} }
@ -191,7 +198,7 @@ int do_shape(bidi_char *line, bidi_char *to, int count)
break; break;
case SR: case SR:
tempShape = STYPE(line[i+1].wc); tempShape = (i+1 < count ? STYPE(line[i+1].wc) : SU);
if((tempShape == SL) || (tempShape == SD) || (tempShape == SC)) if((tempShape == SL) || (tempShape == SD) || (tempShape == SC))
to[i].wc = SFINAL((SISOLATED(line[i].wc))); to[i].wc = SFINAL((SISOLATED(line[i].wc)));
else else
@ -201,10 +208,10 @@ int do_shape(bidi_char *line, bidi_char *to, int count)
case SD: case SD:
/* Make Ligatures */ /* Make Ligatures */
tempShape = STYPE(line[i+1].wc); tempShape = (i+1 < count ? STYPE(line[i+1].wc) : SU);
if(line[i].wc == 0x644) if(line[i].wc == 0x644)
{ {
switch(line[i-1].wc) if (i > 0) switch(line[i-1].wc)
{ {
case 0x622: case 0x622:
ligFlag = 1; ligFlag = 1;
@ -245,7 +252,7 @@ int do_shape(bidi_char *line, bidi_char *to, int count)
if((tempShape == SL) || (tempShape == SD) || (tempShape == SC)) if((tempShape == SL) || (tempShape == SD) || (tempShape == SC))
{ {
tempShape = STYPE(line[i-1].wc); tempShape = (i > 0 ? STYPE(line[i-1].wc) : SU);
if((tempShape == SR) || (tempShape == SD) || (tempShape == SC)) if((tempShape == SR) || (tempShape == SD) || (tempShape == SC))
to[i].wc = SMEDIAL( (SISOLATED(line[i].wc)) ); to[i].wc = SMEDIAL( (SISOLATED(line[i].wc)) );
else else
@ -253,7 +260,7 @@ int do_shape(bidi_char *line, bidi_char *to, int count)
break; break;
} }
tempShape = STYPE(line[i-1].wc); tempShape = (i > 0 ? STYPE(line[i-1].wc) : SU);
if((tempShape == SR) || (tempShape == SD) || (tempShape == SC)) if((tempShape == SR) || (tempShape == SD) || (tempShape == SC))
to[i].wc = SINITIAL((SISOLATED(line[i].wc))); to[i].wc = SINITIAL((SISOLATED(line[i].wc)));
else else
@ -380,9 +387,17 @@ int do_bidi(bidi_char *line, int count)
break; break;
case PDF: case PDF:
currentEmbedding = getPreviousLevel(levels, i); {
currentOverride = currentEmbedding & OMASK; int prevlevel = getPreviousLevel(levels, i);
currentEmbedding = currentEmbedding & ~OMASK;
if (prevlevel == -1) {
currentEmbedding = paragraphLevel;
currentOverride = ON;
} else {
currentOverride = currentEmbedding & OMASK;
currentEmbedding = currentEmbedding & ~OMASK;
}
}
levels[i] = currentEmbedding; levels[i] = currentEmbedding;
break; break;
@ -487,7 +502,7 @@ int do_bidi(bidi_char *line, int count)
* to a European number. A single common separator between two numbers * to a European number. A single common separator between two numbers
* of the same type changes to that type. * of the same type changes to that type.
*/ */
for( i=0; i<(count-1); i++) for( i=1; i<(count-1); i++)
{ {
if(types[i] == ES) if(types[i] == ES)
{ {
@ -512,15 +527,15 @@ int do_bidi(bidi_char *line, int count)
{ {
if(types[i] == ET) if(types[i] == ET)
{ {
if(types[i-1] == EN) if(i > 0 && types[i-1] == EN)
{ {
types[i] = EN; types[i] = EN;
continue; continue;
}else if(types[i+1] == EN) }else if(i < count-1 && types[i+1] == EN)
{ {
types[i] = EN; types[i] = EN;
continue; continue;
}else if(types[i+1] == ET) }else if(i < count-1 && types[i+1] == ET)
{ {
j=i; j=i;
while(j <count && types[j] == ET) while(j <count && types[j] == ET)
@ -579,7 +594,7 @@ int do_bidi(bidi_char *line, int count)
* strong text if the text on both sides has the same direction. European * strong text if the text on both sides has the same direction. European
* and Arabic numbers are treated as though they were R. * and Arabic numbers are treated as though they were R.
*/ */
if(types[0] == ON) if(count >= 2 && types[0] == ON)
{ {
if((types[1] == R) || (types[1] == EN) || (types[1] == AN)) if((types[1] == R) || (types[1] == EN) || (types[1] == AN))
types[0] = R; types[0] = R;
@ -628,7 +643,7 @@ int do_bidi(bidi_char *line, int count)
} }
} }
} }
if(types[count-1] == ON) if(count >= 2 && types[count-1] == ON)
{ {
if(types[count-2] == R || types[count-2] == EN || types[count-2] == AN) if(types[count-2] == R || types[count-2] == EN || types[count-2] == AN)
types[count-1] = R; types[count-1] = R;

View File

@ -55,7 +55,7 @@ void flipThisRun(bidi_char *from, unsigned char* level, int max, int count);
int findIndexOfRun(unsigned char* level , int start, int count, int tlevel); int findIndexOfRun(unsigned char* level , int start, int count, int tlevel);
unsigned char getType(wchar_t ch); unsigned char getType(wchar_t ch);
unsigned char setOverrideBits(unsigned char level, unsigned char override); unsigned char setOverrideBits(unsigned char level, unsigned char override);
unsigned char getPreviousLevel(unsigned char* level, int from); int getPreviousLevel(unsigned char* level, int from);
unsigned char leastGreaterOdd(unsigned char x); unsigned char leastGreaterOdd(unsigned char x);
unsigned char leastGreaterEven(unsigned char x); unsigned char leastGreaterEven(unsigned char x);
unsigned char getRLE(wchar_t ch); unsigned char getRLE(wchar_t ch);
@ -157,299 +157,242 @@ const shape_node shapetypes[] = {
*/ */
typedef struct typedef struct
{ {
unsigned char f;
unsigned char d; unsigned char d;
unsigned char f;
}RLENode; }RLENode;
/* This is an array of RLENodes, which is the /* This is an array of RLENodes, which is the
* Compressed unicode types table * Compressed unicode types table
*/ */
const unsigned char RLE_table[] = const RLENode RLE_table[] =
{ {
0x09, 0x10, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x11, { BN, 9}, { S, 1}, { B, 1}, { S, 1}, { WS, 1},
0x01, 0x0F, 0x01, 0x0E, 0x0E, 0x0F, 0x03, 0x10, { B, 1}, { BN, 14}, { B, 3}, { S, 1}, { WS, 1},
0x01, 0x11, 0x01, 0x12, 0x02, 0x0A, 0x03, 0x12, { ON, 2}, { ET, 3}, { ON, 5}, { ET, 1}, { CS, 1},
0x05, 0x0A, 0x01, 0x0C, 0x01, 0x0A, 0x01, 0x0C, { ET, 1}, { CS, 1}, { ES, 1}, { EN, 10}, { CS, 1},
0x01, 0x09, 0x01, 0x08, 0x0A, 0x0C, 0x01, 0x12, { ON, 6}, { L, 26}, { ON, 6}, { L, 26}, { ON, 4},
0x06, 0x00, 0x1A, 0x12, 0x06, 0x00, 0x1A, 0x12, { BN, 6}, { B, 1}, { BN, 26}, { CS, 1}, { ON, 1},
0x04, 0x0E, 0x06, 0x0F, 0x01, 0x0E, 0x1A, 0x0C, { ET, 4}, { ON, 4}, { L, 1}, { ON, 5}, { ET, 2},
0x01, 0x12, 0x01, 0x0A, 0x04, 0x12, 0x04, 0x00, { EN, 2}, { ON, 1}, { L, 1}, { ON, 3}, { EN, 1},
0x01, 0x12, 0x05, 0x0A, 0x02, 0x08, 0x02, 0x12, { L, 1}, { ON, 5}, { L, 23}, { ON, 1}, { L, 31},
0x01, 0x00, 0x01, 0x12, 0x03, 0x08, 0x01, 0x00, { ON, 1}, { L, 255}, { L, 42}, { ON, 1}, { L, 18},
0x01, 0x12, 0x05, 0x00, 0x17, 0x12, 0x01, 0x00, { ON, 28}, { L, 94}, { ON, 2}, { L, 9}, { ON, 2},
0x1F, 0x12, 0x01, 0x00, 0xFF, 0x00, 0x2A, 0x12, { L, 7}, { ON, 14}, { L, 2}, { ON, 14}, { L, 5},
0x01, 0x00, 0x12, 0x12, 0x1C, 0x00, 0x5E, 0x12, { ON, 9}, { L, 1}, { ON, 17}, {NSM, 80}, { ON, 16},
0x02, 0x00, 0x09, 0x12, 0x02, 0x00, 0x07, 0x12, {NSM, 16}, { ON, 10}, { L, 1}, { ON, 11}, { L, 1},
0x0E, 0x00, 0x02, 0x12, 0x0E, 0x00, 0x05, 0x12, { ON, 1}, { L, 3}, { ON, 1}, { L, 1}, { ON, 1},
0x09, 0x00, 0x01, 0x12, 0x11, 0x0D, 0x50, 0x12, { L, 20}, { ON, 1}, { L, 44}, { ON, 1}, { L, 38},
0x10, 0x0D, 0x10, 0x12, 0x0A, 0x00, 0x01, 0x12, { ON, 10}, { L, 131}, {NSM, 4}, { ON, 1}, {NSM, 2},
0x0B, 0x00, 0x01, 0x12, 0x01, 0x00, 0x03, 0x12, { L, 69}, { ON, 1}, { L, 38}, { ON, 2}, { L, 2},
0x01, 0x00, 0x01, 0x12, 0x01, 0x00, 0x14, 0x12, { ON, 6}, { L, 16}, { ON, 33}, { L, 38}, { ON, 2},
0x01, 0x00, 0x2C, 0x12, 0x01, 0x00, 0x26, 0x12, { L, 7}, { ON, 1}, { L, 39}, { ON, 1}, { L, 1},
0x0A, 0x00, 0x83, 0x0D, 0x04, 0x12, 0x01, 0x0D, { ON, 7}, {NSM, 17}, { ON, 1}, {NSM, 23}, { ON, 1},
0x02, 0x00, 0x45, 0x12, 0x01, 0x00, 0x26, 0x12, {NSM, 3}, { R, 1}, {NSM, 1}, { R, 1}, {NSM, 2},
0x02, 0x00, 0x02, 0x12, 0x06, 0x00, 0x10, 0x12, { R, 1}, {NSM, 1}, { ON, 11}, { R, 27}, { ON, 5},
0x21, 0x00, 0x26, 0x12, 0x02, 0x00, 0x07, 0x12, { R, 5}, { ON, 23}, { CS, 1}, { ON, 14}, { AL, 1},
0x01, 0x00, 0x27, 0x12, 0x01, 0x00, 0x01, 0x12, { ON, 3}, { AL, 1}, { ON, 1}, { AL, 26}, { ON, 5},
0x07, 0x0D, 0x11, 0x12, 0x01, 0x0D, 0x17, 0x12, { AL, 11}, {NSM, 11}, { ON, 10}, { AN, 10}, { ET, 1},
0x01, 0x0D, 0x03, 0x03, 0x01, 0x0D, 0x01, 0x03, { AN, 2}, { AL, 3}, {NSM, 1}, { AL, 101}, {NSM, 7},
0x01, 0x0D, 0x02, 0x03, 0x01, 0x0D, 0x01, 0x12, { AL, 1}, {NSM, 7}, { AL, 2}, {NSM, 2}, { ON, 1},
0x0B, 0x03, 0x1B, 0x12, 0x05, 0x03, 0x05, 0x12, {NSM, 4}, { ON, 2}, { EN, 10}, { AL, 5}, { ON, 1},
0x17, 0x0C, 0x01, 0x12, 0x0E, 0x04, 0x01, 0x12, { AL, 14}, { ON, 1}, { BN, 1}, { AL, 1}, {NSM, 1},
0x03, 0x04, 0x01, 0x12, 0x01, 0x04, 0x1A, 0x12, { AL, 27}, { ON, 3}, {NSM, 27}, { ON, 53}, { AL, 38},
0x05, 0x04, 0x0B, 0x0D, 0x0B, 0x12, 0x0A, 0x0B, {NSM, 11}, { AL, 1}, { ON, 255}, { ON, 80}, {NSM, 2},
0x0A, 0x0A, 0x01, 0x0B, 0x02, 0x04, 0x03, 0x0D, { L, 1}, { ON, 1}, { L, 53}, { ON, 2}, {NSM, 1},
0x01, 0x04, 0x65, 0x0D, 0x07, 0x04, 0x01, 0x0D, { L, 4}, {NSM, 8}, { L, 4}, {NSM, 1}, { ON, 2},
0x07, 0x04, 0x02, 0x0D, 0x02, 0x12, 0x01, 0x0D, { L, 1}, {NSM, 4}, { ON, 3}, { L, 10}, {NSM, 2},
0x04, 0x12, 0x02, 0x08, 0x0A, 0x04, 0x05, 0x12, { L, 13}, { ON, 16}, {NSM, 1}, { L, 2}, { ON, 1},
0x01, 0x04, 0x0E, 0x12, 0x01, 0x0E, 0x01, 0x04, { L, 8}, { ON, 2}, { L, 2}, { ON, 2}, { L, 22},
0x01, 0x0D, 0x01, 0x04, 0x1B, 0x12, 0x03, 0x0D, { ON, 1}, { L, 7}, { ON, 1}, { L, 1}, { ON, 3},
0x1B, 0x12, 0x35, 0x04, 0x26, 0x0D, 0x0B, 0x04, { L, 4}, { ON, 2}, {NSM, 1}, { ON, 1}, { L, 3},
0x01, 0x12, 0xFF, 0x12, 0x50, 0x0D, 0x02, 0x00, {NSM, 4}, { ON, 2}, { L, 2}, { ON, 2}, { L, 2},
0x01, 0x12, 0x01, 0x00, 0x35, 0x12, 0x02, 0x0D, {NSM, 1}, { ON, 9}, { L, 1}, { ON, 4}, { L, 2},
0x01, 0x00, 0x04, 0x0D, 0x08, 0x00, 0x04, 0x0D, { ON, 1}, { L, 3}, {NSM, 2}, { ON, 2}, { L, 12},
0x01, 0x12, 0x02, 0x00, 0x01, 0x0D, 0x04, 0x12, { ET, 2}, { L, 7}, { ON, 7}, {NSM, 1}, { ON, 2},
0x03, 0x00, 0x0A, 0x0D, 0x02, 0x00, 0x0D, 0x12, { L, 6}, { ON, 4}, { L, 2}, { ON, 2}, { L, 22},
0x10, 0x0D, 0x01, 0x00, 0x02, 0x12, 0x01, 0x00, { ON, 1}, { L, 7}, { ON, 1}, { L, 2}, { ON, 1},
0x08, 0x12, 0x02, 0x00, 0x02, 0x12, 0x02, 0x00, { L, 2}, { ON, 1}, { L, 2}, { ON, 2}, {NSM, 1},
0x16, 0x12, 0x01, 0x00, 0x07, 0x12, 0x01, 0x00, { ON, 1}, { L, 3}, {NSM, 2}, { ON, 4}, {NSM, 2},
0x01, 0x12, 0x03, 0x00, 0x04, 0x12, 0x02, 0x0D, { ON, 2}, {NSM, 3}, { ON, 11}, { L, 4}, { ON, 1},
0x01, 0x12, 0x01, 0x00, 0x03, 0x0D, 0x04, 0x12, { L, 1}, { ON, 7}, { L, 10}, {NSM, 2}, { L, 3},
0x02, 0x00, 0x02, 0x12, 0x02, 0x00, 0x02, 0x0D, { ON, 12}, {NSM, 2}, { L, 1}, { ON, 1}, { L, 7},
0x01, 0x12, 0x09, 0x00, 0x01, 0x12, 0x04, 0x00, { ON, 1}, { L, 1}, { ON, 1}, { L, 3}, { ON, 1},
0x02, 0x12, 0x01, 0x00, 0x03, 0x0D, 0x02, 0x12, { L, 22}, { ON, 1}, { L, 7}, { ON, 1}, { L, 2},
0x02, 0x00, 0x0C, 0x0A, 0x02, 0x00, 0x07, 0x12, { ON, 1}, { L, 5}, { ON, 2}, {NSM, 1}, { L, 4},
0x07, 0x0D, 0x01, 0x12, 0x02, 0x00, 0x06, 0x12, {NSM, 5}, { ON, 1}, {NSM, 2}, { L, 1}, { ON, 1},
0x04, 0x00, 0x02, 0x12, 0x02, 0x00, 0x16, 0x12, { L, 2}, {NSM, 1}, { ON, 2}, { L, 1}, { ON, 15},
0x01, 0x00, 0x07, 0x12, 0x01, 0x00, 0x02, 0x12, { L, 1}, { ON, 5}, { L, 10}, { ON, 17}, {NSM, 1},
0x01, 0x00, 0x02, 0x12, 0x01, 0x00, 0x02, 0x12, { L, 2}, { ON, 1}, { L, 8}, { ON, 2}, { L, 2},
0x02, 0x0D, 0x01, 0x12, 0x01, 0x00, 0x03, 0x0D, { ON, 2}, { L, 22}, { ON, 1}, { L, 7}, { ON, 1},
0x02, 0x12, 0x04, 0x0D, 0x02, 0x12, 0x02, 0x0D, { L, 2}, { ON, 2}, { L, 4}, { ON, 2}, {NSM, 1},
0x03, 0x12, 0x0B, 0x00, 0x04, 0x12, 0x01, 0x00, { L, 2}, {NSM, 1}, { L, 1}, {NSM, 3}, { ON, 3},
0x01, 0x12, 0x07, 0x00, 0x0A, 0x0D, 0x02, 0x00, { L, 2}, { ON, 2}, { L, 2}, {NSM, 1}, { ON, 8},
0x03, 0x12, 0x0C, 0x0D, 0x02, 0x00, 0x01, 0x12, {NSM, 1}, { L, 1}, { ON, 4}, { L, 2}, { ON, 1},
0x01, 0x00, 0x07, 0x12, 0x01, 0x00, 0x01, 0x12, { L, 3}, { ON, 4}, { L, 11}, { ON, 17}, {NSM, 1},
0x01, 0x00, 0x03, 0x12, 0x01, 0x00, 0x16, 0x12, { L, 1}, { ON, 1}, { L, 6}, { ON, 3}, { L, 3},
0x01, 0x00, 0x07, 0x12, 0x01, 0x00, 0x02, 0x12, { ON, 1}, { L, 4}, { ON, 3}, { L, 2}, { ON, 1},
0x01, 0x00, 0x05, 0x12, 0x02, 0x0D, 0x01, 0x00, { L, 1}, { ON, 1}, { L, 2}, { ON, 3}, { L, 2},
0x04, 0x0D, 0x05, 0x12, 0x01, 0x0D, 0x02, 0x00, { ON, 3}, { L, 3}, { ON, 3}, { L, 8}, { ON, 1},
0x01, 0x12, 0x01, 0x00, 0x02, 0x0D, 0x01, 0x12, { L, 3}, { ON, 4}, { L, 2}, {NSM, 1}, { L, 2},
0x02, 0x00, 0x01, 0x12, 0x0F, 0x00, 0x01, 0x12, { ON, 3}, { L, 3}, { ON, 1}, { L, 3}, {NSM, 1},
0x05, 0x00, 0x0A, 0x12, 0x11, 0x0D, 0x01, 0x00, { ON, 9}, { L, 1}, { ON, 15}, { L, 12}, { ON, 14},
0x02, 0x12, 0x01, 0x00, 0x08, 0x12, 0x02, 0x00, { L, 3}, { ON, 1}, { L, 8}, { ON, 1}, { L, 3},
0x02, 0x12, 0x02, 0x00, 0x16, 0x12, 0x01, 0x00, { ON, 1}, { L, 23}, { ON, 1}, { L, 10}, { ON, 1},
0x07, 0x12, 0x01, 0x00, 0x02, 0x12, 0x02, 0x00, { L, 5}, { ON, 4}, {NSM, 3}, { L, 4}, { ON, 1},
0x04, 0x12, 0x02, 0x0D, 0x01, 0x00, 0x02, 0x0D, {NSM, 3}, { ON, 1}, {NSM, 4}, { ON, 7}, {NSM, 2},
0x01, 0x00, 0x01, 0x0D, 0x03, 0x12, 0x03, 0x00, { ON, 9}, { L, 2}, { ON, 4}, { L, 10}, { ON, 18},
0x02, 0x12, 0x02, 0x00, 0x02, 0x0D, 0x01, 0x12, { L, 2}, { ON, 1}, { L, 8}, { ON, 1}, { L, 3},
0x08, 0x0D, 0x01, 0x00, 0x01, 0x12, 0x04, 0x00, { ON, 1}, { L, 23}, { ON, 1}, { L, 10}, { ON, 1},
0x02, 0x12, 0x01, 0x00, 0x03, 0x12, 0x04, 0x00, { L, 5}, { ON, 4}, { L, 1}, {NSM, 1}, { L, 5},
0x0B, 0x12, 0x11, 0x0D, 0x01, 0x00, 0x01, 0x12, { ON, 1}, {NSM, 1}, { L, 2}, { ON, 1}, { L, 2},
0x01, 0x00, 0x06, 0x12, 0x03, 0x00, 0x03, 0x12, {NSM, 2}, { ON, 7}, { L, 2}, { ON, 7}, { L, 1},
0x01, 0x00, 0x04, 0x12, 0x03, 0x00, 0x02, 0x12, { ON, 1}, { L, 2}, { ON, 4}, { L, 10}, { ON, 18},
0x01, 0x00, 0x01, 0x12, 0x01, 0x00, 0x02, 0x12, { L, 2}, { ON, 1}, { L, 8}, { ON, 1}, { L, 3},
0x03, 0x00, 0x02, 0x12, 0x03, 0x00, 0x03, 0x12, { ON, 1}, { L, 23}, { ON, 1}, { L, 16}, { ON, 4},
0x03, 0x00, 0x08, 0x12, 0x01, 0x00, 0x03, 0x12, { L, 3}, {NSM, 3}, { ON, 2}, { L, 3}, { ON, 1},
0x04, 0x00, 0x02, 0x0D, 0x01, 0x00, 0x02, 0x12, { L, 3}, {NSM, 1}, { ON, 9}, { L, 1}, { ON, 8},
0x03, 0x00, 0x03, 0x12, 0x01, 0x00, 0x03, 0x0D, { L, 2}, { ON, 4}, { L, 10}, { ON, 18}, { L, 2},
0x01, 0x12, 0x09, 0x00, 0x01, 0x12, 0x0F, 0x00, { ON, 1}, { L, 18}, { ON, 3}, { L, 24}, { ON, 1},
0x0C, 0x12, 0x0E, 0x00, 0x03, 0x12, 0x01, 0x00, { L, 9}, { ON, 1}, { L, 1}, { ON, 2}, { L, 7},
0x08, 0x12, 0x01, 0x00, 0x03, 0x12, 0x01, 0x00, { ON, 3}, {NSM, 1}, { ON, 4}, { L, 3}, {NSM, 3},
0x17, 0x12, 0x01, 0x00, 0x0A, 0x12, 0x01, 0x00, { ON, 1}, {NSM, 1}, { ON, 1}, { L, 8}, { ON, 18},
0x05, 0x12, 0x04, 0x0D, 0x03, 0x00, 0x04, 0x12, { L, 3}, { ON, 12}, { L, 48}, {NSM, 1}, { L, 2},
0x01, 0x0D, 0x03, 0x12, 0x01, 0x0D, 0x04, 0x12, {NSM, 7}, { ON, 4}, { ET, 1}, { L, 7}, {NSM, 8},
0x07, 0x0D, 0x02, 0x12, 0x09, 0x00, 0x02, 0x12, { L, 13}, { ON, 37}, { L, 2}, { ON, 1}, { L, 1},
0x04, 0x00, 0x0A, 0x12, 0x12, 0x00, 0x02, 0x12, { ON, 2}, { L, 2}, { ON, 1}, { L, 1}, { ON, 2},
0x01, 0x00, 0x08, 0x12, 0x01, 0x00, 0x03, 0x12, { L, 1}, { ON, 6}, { L, 4}, { ON, 1}, { L, 7},
0x01, 0x00, 0x17, 0x12, 0x01, 0x00, 0x0A, 0x12, { ON, 1}, { L, 3}, { ON, 1}, { L, 1}, { ON, 1},
0x01, 0x00, 0x05, 0x12, 0x04, 0x00, 0x01, 0x0D, { L, 1}, { ON, 2}, { L, 2}, { ON, 1}, { L, 4},
0x01, 0x00, 0x05, 0x12, 0x01, 0x0D, 0x01, 0x00, {NSM, 1}, { L, 2}, {NSM, 6}, { ON, 1}, {NSM, 2},
0x02, 0x12, 0x01, 0x00, 0x02, 0x0D, 0x02, 0x12, { L, 1}, { ON, 2}, { L, 5}, { ON, 1}, { L, 1},
0x07, 0x00, 0x02, 0x12, 0x07, 0x00, 0x01, 0x12, { ON, 1}, {NSM, 6}, { ON, 2}, { L, 10}, { ON, 2},
0x01, 0x00, 0x02, 0x12, 0x04, 0x00, 0x0A, 0x12, { L, 2}, { ON, 34}, { L, 24}, {NSM, 2}, { L, 27},
0x12, 0x00, 0x02, 0x12, 0x01, 0x00, 0x08, 0x12, {NSM, 1}, { L, 1}, {NSM, 1}, { L, 1}, {NSM, 1},
0x01, 0x00, 0x03, 0x12, 0x01, 0x00, 0x17, 0x12, { ON, 4}, { L, 10}, { ON, 1}, { L, 34}, { ON, 6},
0x01, 0x00, 0x10, 0x12, 0x04, 0x00, 0x03, 0x0D, {NSM, 14}, { L, 1}, {NSM, 5}, { L, 1}, {NSM, 2},
0x03, 0x12, 0x02, 0x00, 0x03, 0x12, 0x01, 0x00, { L, 4}, { ON, 4}, {NSM, 8}, { ON, 1}, {NSM, 36},
0x03, 0x0D, 0x01, 0x12, 0x09, 0x00, 0x01, 0x12, { ON, 1}, { L, 8}, {NSM, 1}, { L, 6}, { ON, 2},
0x08, 0x00, 0x02, 0x12, 0x04, 0x00, 0x0A, 0x12, { L, 1}, { ON, 48}, { L, 34}, { ON, 1}, { L, 5},
0x12, 0x00, 0x02, 0x12, 0x01, 0x00, 0x12, 0x12, { ON, 1}, { L, 2}, { ON, 1}, { L, 1}, {NSM, 4},
0x03, 0x00, 0x18, 0x12, 0x01, 0x00, 0x09, 0x12, { L, 1}, {NSM, 1}, { ON, 3}, {NSM, 2}, { L, 1},
0x01, 0x00, 0x01, 0x12, 0x02, 0x00, 0x07, 0x12, {NSM, 1}, { ON, 6}, { L, 24}, {NSM, 2}, { ON, 70},
0x03, 0x0D, 0x01, 0x12, 0x04, 0x00, 0x03, 0x0D, { L, 38}, { ON, 10}, { L, 41}, { ON, 2}, { L, 1},
0x03, 0x12, 0x01, 0x0D, 0x01, 0x12, 0x01, 0x00, { ON, 4}, { L, 90}, { ON, 5}, { L, 68}, { ON, 5},
0x08, 0x12, 0x12, 0x00, 0x03, 0x12, 0x0C, 0x00, { L, 82}, { ON, 6}, { L, 7}, { ON, 1}, { L, 63},
0x30, 0x0D, 0x01, 0x00, 0x02, 0x0D, 0x07, 0x12, { ON, 1}, { L, 1}, { ON, 1}, { L, 4}, { ON, 2},
0x04, 0x0A, 0x01, 0x00, 0x07, 0x0D, 0x08, 0x00, { L, 7}, { ON, 1}, { L, 1}, { ON, 1}, { L, 4},
0x0D, 0x12, 0x25, 0x00, 0x02, 0x12, 0x01, 0x00, { ON, 2}, { L, 39}, { ON, 1}, { L, 1}, { ON, 1},
0x01, 0x12, 0x02, 0x00, 0x02, 0x12, 0x01, 0x00, { L, 4}, { ON, 2}, { L, 31}, { ON, 1}, { L, 1},
0x01, 0x12, 0x02, 0x00, 0x01, 0x12, 0x06, 0x00, { ON, 1}, { L, 4}, { ON, 2}, { L, 7}, { ON, 1},
0x04, 0x12, 0x01, 0x00, 0x07, 0x12, 0x01, 0x00, { L, 1}, { ON, 1}, { L, 4}, { ON, 2}, { L, 7},
0x03, 0x12, 0x01, 0x00, 0x01, 0x12, 0x01, 0x00, { ON, 1}, { L, 7}, { ON, 1}, { L, 23}, { ON, 1},
0x01, 0x12, 0x02, 0x00, 0x02, 0x12, 0x01, 0x00, { L, 31}, { ON, 1}, { L, 1}, { ON, 1}, { L, 4},
0x04, 0x0D, 0x01, 0x00, 0x02, 0x0D, 0x06, 0x12, { ON, 2}, { L, 7}, { ON, 1}, { L, 39}, { ON, 1},
0x01, 0x0D, 0x02, 0x00, 0x01, 0x12, 0x02, 0x00, { L, 19}, { ON, 6}, { L, 28}, { ON, 35}, { L, 85},
0x05, 0x12, 0x01, 0x00, 0x01, 0x12, 0x01, 0x0D, { ON, 12}, { L, 255}, { L, 255}, { L, 120}, { ON, 9},
0x06, 0x12, 0x02, 0x00, 0x0A, 0x12, 0x02, 0x00, { WS, 1}, { L, 26}, { ON, 5}, { L, 81}, { ON, 15},
0x02, 0x12, 0x22, 0x00, 0x18, 0x0D, 0x02, 0x00, { L, 13}, { ON, 1}, { L, 4}, {NSM, 3}, { ON, 11},
0x1B, 0x0D, 0x01, 0x00, 0x01, 0x0D, 0x01, 0x00, { L, 18}, {NSM, 3}, { L, 2}, { ON, 9}, { L, 18},
0x01, 0x0D, 0x01, 0x12, 0x04, 0x00, 0x0A, 0x12, {NSM, 2}, { ON, 12}, { L, 13}, { ON, 1}, { L, 3},
0x01, 0x00, 0x22, 0x12, 0x06, 0x0D, 0x0E, 0x00, { ON, 1}, {NSM, 2}, { ON, 12}, { L, 55}, {NSM, 7},
0x01, 0x0D, 0x05, 0x00, 0x01, 0x0D, 0x02, 0x00, { L, 8}, {NSM, 1}, { L, 2}, {NSM, 11}, { L, 7},
0x04, 0x12, 0x04, 0x0D, 0x08, 0x12, 0x01, 0x0D, { ET, 1}, { L, 1}, { ON, 3}, { L, 10}, { ON, 33},
0x24, 0x12, 0x01, 0x00, 0x08, 0x0D, 0x01, 0x00, {NSM, 3}, { BN, 1}, { ON, 1}, { L, 10}, { ON, 6},
0x06, 0x12, 0x02, 0x00, 0x01, 0x12, 0x30, 0x00, { L, 88}, { ON, 8}, { L, 41}, {NSM, 1}, { ON, 255},
0x22, 0x12, 0x01, 0x00, 0x05, 0x12, 0x01, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 91},
0x02, 0x12, 0x01, 0x00, 0x01, 0x0D, 0x04, 0x00, { L, 156}, { ON, 4}, { L, 90}, { ON, 6}, { L, 22},
0x01, 0x0D, 0x01, 0x12, 0x03, 0x0D, 0x02, 0x00, { ON, 2}, { L, 6}, { ON, 2}, { L, 38}, { ON, 2},
0x01, 0x0D, 0x01, 0x12, 0x06, 0x00, 0x18, 0x0D, { L, 6}, { ON, 2}, { L, 8}, { ON, 1}, { L, 1},
0x02, 0x12, 0x46, 0x00, 0x26, 0x12, 0x0A, 0x00, { ON, 1}, { L, 1}, { ON, 1}, { L, 1}, { ON, 1},
0x29, 0x12, 0x02, 0x00, 0x01, 0x12, 0x04, 0x00, { L, 31}, { ON, 2}, { L, 53}, { ON, 1}, { L, 7},
0x5A, 0x12, 0x05, 0x00, 0x44, 0x12, 0x05, 0x00, { ON, 1}, { L, 1}, { ON, 3}, { L, 3}, { ON, 1},
0x52, 0x12, 0x06, 0x00, 0x07, 0x12, 0x01, 0x00, { L, 7}, { ON, 3}, { L, 4}, { ON, 2}, { L, 6},
0x3F, 0x12, 0x01, 0x00, 0x01, 0x12, 0x01, 0x00, { ON, 4}, { L, 13}, { ON, 5}, { L, 3}, { ON, 1},
0x04, 0x12, 0x02, 0x00, 0x07, 0x12, 0x01, 0x00, { L, 7}, { ON, 3}, { WS, 11}, { BN, 3}, { L, 1},
0x01, 0x12, 0x01, 0x00, 0x04, 0x12, 0x02, 0x00, { R, 1}, { ON, 24}, { WS, 1}, { B, 1}, {LRE, 1},
0x27, 0x12, 0x01, 0x00, 0x01, 0x12, 0x01, 0x00, {RLE, 1}, {PDF, 1}, {LRO, 1}, {RLO, 1}, { WS, 1},
0x04, 0x12, 0x02, 0x00, 0x1F, 0x12, 0x01, 0x00, { ET, 5}, { ON, 42}, { WS, 1}, { BN, 4}, { ON, 6},
0x01, 0x12, 0x01, 0x00, 0x04, 0x12, 0x02, 0x00, { BN, 6}, { EN, 1}, { L, 1}, { ON, 2}, { EN, 6},
0x07, 0x12, 0x01, 0x00, 0x01, 0x12, 0x01, 0x00, { ET, 2}, { ON, 3}, { L, 1}, { EN, 10}, { ET, 2},
0x04, 0x12, 0x02, 0x00, 0x07, 0x12, 0x01, 0x00, { ON, 20}, { ET, 18}, { ON, 30}, {NSM, 27}, { ON, 23},
0x07, 0x12, 0x01, 0x00, 0x17, 0x12, 0x01, 0x00, { L, 1}, { ON, 4}, { L, 1}, { ON, 2}, { L, 10},
0x1F, 0x12, 0x01, 0x00, 0x01, 0x12, 0x01, 0x00, { ON, 1}, { L, 1}, { ON, 3}, { L, 5}, { ON, 6},
0x04, 0x12, 0x02, 0x00, 0x07, 0x12, 0x01, 0x00, { L, 1}, { ON, 1}, { L, 1}, { ON, 1}, { L, 1},
0x27, 0x12, 0x01, 0x00, 0x13, 0x12, 0x06, 0x00, { ON, 1}, { L, 4}, { ET, 1}, { L, 3}, { ON, 1},
0x1C, 0x12, 0x23, 0x00, 0x55, 0x12, 0x0C, 0x00, { L, 7}, { ON, 3}, { L, 3}, { ON, 5}, { L, 5},
0xFF, 0x00, 0xFF, 0x00, 0x78, 0x12, 0x09, 0x11, { ON, 22}, { L, 36}, { ON, 142}, { ET, 2}, { ON, 255},
0x01, 0x00, 0x1A, 0x12, 0x05, 0x00, 0x51, 0x12, { ON, 35}, { L, 69}, { ON, 26}, { L, 1}, { ON, 202},
0x0F, 0x00, 0x0D, 0x12, 0x01, 0x00, 0x04, 0x0D, { EN, 60}, { L, 78}, { EN, 1}, { ON, 255}, { ON, 255},
0x03, 0x12, 0x0B, 0x00, 0x12, 0x0D, 0x03, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x02, 0x12, 0x09, 0x00, 0x12, 0x0D, 0x02, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 32},
0x0C, 0x00, 0x0D, 0x12, 0x01, 0x00, 0x03, 0x12, { WS, 1}, { ON, 4}, { L, 3}, { ON, 25}, { L, 9},
0x01, 0x0D, 0x02, 0x12, 0x0C, 0x00, 0x37, 0x0D, {NSM, 6}, { ON, 1}, { L, 5}, { ON, 2}, { L, 5},
0x07, 0x00, 0x08, 0x0D, 0x01, 0x00, 0x02, 0x0D, { ON, 4}, { L, 86}, { ON, 2}, {NSM, 2}, { ON, 2},
0x0B, 0x00, 0x07, 0x0A, 0x01, 0x00, 0x01, 0x12, { L, 3}, { ON, 1}, { L, 90}, { ON, 1}, { L, 4},
0x03, 0x00, 0x0A, 0x12, 0x21, 0x0D, 0x03, 0x0E, { ON, 5}, { L, 40}, { ON, 4}, { L, 94}, { ON, 1},
0x01, 0x12, 0x01, 0x00, 0x0A, 0x12, 0x06, 0x00, { L, 40}, { ON, 56}, { L, 45}, { ON, 3}, { L, 36},
0x58, 0x12, 0x08, 0x00, 0x29, 0x0D, 0x01, 0x12, { ON, 28}, { L, 28}, { ON, 3}, { L, 50}, { ON, 15},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { L, 12}, { ON, 4}, { L, 47}, { ON, 1}, { L, 119},
0xFF, 0x12, 0x5B, 0x00, 0x9C, 0x12, 0x04, 0x00, { ON, 4}, { L, 99}, { ON, 2}, { L, 31}, { ON, 1},
0x5A, 0x12, 0x06, 0x00, 0x16, 0x12, 0x02, 0x00, { L, 1}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x06, 0x12, 0x02, 0x00, 0x26, 0x12, 0x02, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x06, 0x12, 0x02, 0x00, 0x08, 0x12, 0x01, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x01, 0x12, 0x01, 0x00, 0x01, 0x12, 0x01, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x01, 0x12, 0x01, 0x00, 0x1F, 0x12, 0x02, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x35, 0x12, 0x01, 0x00, 0x07, 0x12, 0x01, 0x00, { ON, 255}, { ON, 205}, { L, 1}, { ON, 74}, { L, 1},
0x01, 0x12, 0x03, 0x00, 0x03, 0x12, 0x01, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x07, 0x12, 0x03, 0x00, 0x04, 0x12, 0x02, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x06, 0x12, 0x04, 0x00, 0x0D, 0x12, 0x05, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x03, 0x12, 0x01, 0x00, 0x07, 0x12, 0x03, 0x11, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x0B, 0x0E, 0x03, 0x00, 0x01, 0x03, 0x01, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x18, 0x11, 0x01, 0x0F, 0x01, 0x01, 0x01, 0x05, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x01, 0x07, 0x01, 0x02, 0x01, 0x06, 0x01, 0x11, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x01, 0x0A, 0x05, 0x12, 0x2A, 0x11, 0x01, 0x0E, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x04, 0x12, 0x06, 0x0E, 0x06, 0x08, 0x01, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x01, 0x12, 0x02, 0x08, 0x06, 0x0A, 0x02, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x03, 0x00, 0x01, 0x08, 0x0A, 0x0A, 0x02, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x14, 0x0A, 0x12, 0x12, 0x1E, 0x0D, 0x1B, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x17, 0x00, 0x01, 0x12, 0x04, 0x00, 0x01, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x02, 0x00, 0x0A, 0x12, 0x01, 0x00, 0x01, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x03, 0x00, 0x05, 0x12, 0x06, 0x00, 0x01, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x01, 0x00, 0x01, 0x12, 0x01, 0x00, 0x01, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x01, 0x00, 0x04, 0x0A, 0x01, 0x00, 0x03, 0x12, { ON, 255}, { ON, 245}, { L, 1}, { ON, 90}, { L, 255},
0x01, 0x00, 0x07, 0x12, 0x03, 0x00, 0x03, 0x12, { L, 255}, { L, 255}, { L, 255}, { L, 145}, { ON, 255},
0x05, 0x00, 0x05, 0x12, 0x16, 0x00, 0x24, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x8E, 0x0A, 0x02, 0x12, 0xFF, 0x12, 0x23, 0x00, { ON, 255}, { ON, 122}, { L, 1}, { ON, 255}, { ON, 255},
0x45, 0x12, 0x1A, 0x00, 0x01, 0x12, 0xCA, 0x08, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x3C, 0x00, 0x4E, 0x08, 0x01, 0x12, 0xFF, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0xFF, 0x12, 0xFF, 0x12, 0x20, 0x11, 0x01, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x04, 0x00, 0x03, 0x12, 0x19, 0x00, 0x09, 0x0D, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x06, 0x12, 0x01, 0x00, 0x05, 0x12, 0x02, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x05, 0x12, 0x04, 0x00, 0x56, 0x12, 0x02, 0x0D, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x02, 0x12, 0x02, 0x00, 0x03, 0x12, 0x01, 0x00, { ON, 255}, { ON, 205}, { L, 1}, { ON, 92}, { L, 1},
0x5A, 0x12, 0x01, 0x00, 0x04, 0x12, 0x05, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 129}, { L, 2},
0x28, 0x12, 0x04, 0x00, 0x5E, 0x12, 0x01, 0x00, { ON, 126}, { L, 2}, { ON, 255}, { ON, 255}, { ON, 255},
0x28, 0x12, 0x38, 0x00, 0x2D, 0x12, 0x03, 0x00, { ON, 255}, { ON, 2}, { L, 2}, { ON, 255}, { ON, 255},
0x24, 0x12, 0x1C, 0x00, 0x1C, 0x12, 0x03, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x32, 0x12, 0x0F, 0x00, 0x0C, 0x12, 0x04, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x2F, 0x12, 0x01, 0x00, 0x77, 0x12, 0x04, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x63, 0x12, 0x02, 0x00, 0x1F, 0x12, 0x01, 0x00, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 255},
0x01, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 255}, { ON, 255}, { ON, 255}, { ON, 23}, { L, 255},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { L, 48}, { ON, 2}, { L, 59}, { ON, 149}, { L, 7},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 12}, { L, 5}, { ON, 5}, { R, 1}, {NSM, 1},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { R, 10}, { ET, 1}, { R, 13}, { ON, 1}, { R, 5},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 1}, { R, 1}, { ON, 1}, { R, 2}, { ON, 1},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { R, 2}, { ON, 1}, { R, 10}, { AL, 98}, { ON, 33},
0xFF, 0x12, 0xFF, 0x12, 0xCD, 0x00, 0x01, 0x12, { AL, 255}, { AL, 108}, { ON, 18}, { AL, 64}, { ON, 2},
0x4A, 0x00, 0x01, 0x12, 0xFF, 0x12, 0xFF, 0x12, { AL, 54}, { ON, 40}, { AL, 13}, { ON, 3}, {NSM, 16},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 16}, {NSM, 4}, { ON, 44}, { CS, 1}, { ON, 1},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { CS, 1}, { ON, 2}, { CS, 1}, { ON, 9}, { ET, 1},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 2}, { ET, 2}, { ON, 5}, { ET, 2}, { ON, 5},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { AL, 5}, { ON, 1}, { AL, 135}, { ON, 2}, { BN, 1},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 3}, { ET, 3}, { ON, 5}, { ET, 1}, { CS, 1},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ET, 1}, { CS, 1}, { ES, 1}, { EN, 10}, { CS, 1},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 6}, { L, 26}, { ON, 6}, { L, 26}, { ON, 11},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { L, 89}, { ON, 3}, { L, 6}, { ON, 2}, { L, 6},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ON, 2}, { L, 6}, { ON, 2}, { L, 3}, { ON, 3},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, { ET, 2}, { ON, 3}, { ET, 2}, { ON, 9}, { L, 14},
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xF5, 0x00,
0x01, 0x12, 0x5A, 0x00, 0xFF, 0x00, 0xFF, 0x00,
0xFF, 0x00, 0xFF, 0x00, 0x91, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0x7A, 0x00, 0x01, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xCD, 0x00,
0x01, 0x12, 0x5C, 0x00, 0x01, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0x81, 0x00, 0x02, 0x12,
0x7E, 0x00, 0x02, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0x02, 0x00, 0x02, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
0xFF, 0x12, 0x17, 0x00, 0xFF, 0x00, 0x30, 0x12,
0x02, 0x00, 0x3B, 0x12, 0x95, 0x00, 0x07, 0x12,
0x0C, 0x00, 0x05, 0x12, 0x05, 0x03, 0x01, 0x0D,
0x01, 0x03, 0x0A, 0x0A, 0x01, 0x03, 0x0D, 0x12,
0x01, 0x03, 0x05, 0x12, 0x01, 0x03, 0x01, 0x12,
0x01, 0x03, 0x02, 0x12, 0x01, 0x03, 0x02, 0x12,
0x01, 0x03, 0x0A, 0x04, 0x62, 0x12, 0x21, 0x04,
0xFF, 0x04, 0x6C, 0x12, 0x12, 0x04, 0x40, 0x12,
0x02, 0x04, 0x36, 0x12, 0x28, 0x04, 0x0D, 0x12,
0x03, 0x0D, 0x10, 0x12, 0x10, 0x0D, 0x04, 0x12,
0x2C, 0x0C, 0x01, 0x12, 0x01, 0x0C, 0x01, 0x12,
0x02, 0x0C, 0x01, 0x12, 0x09, 0x0A, 0x01, 0x12,
0x02, 0x0A, 0x02, 0x12, 0x05, 0x0A, 0x02, 0x12,
0x05, 0x04, 0x05, 0x12, 0x01, 0x04, 0x87, 0x12,
0x02, 0x0E, 0x01, 0x12, 0x03, 0x0A, 0x03, 0x12,
0x05, 0x0A, 0x01, 0x0C, 0x01, 0x0A, 0x01, 0x0C,
0x01, 0x09, 0x01, 0x08, 0x0A, 0x0C, 0x01, 0x12,
0x06, 0x00, 0x1A, 0x12, 0x06, 0x00, 0x1A, 0x12,
0x0B, 0x00, 0x59, 0x12, 0x03, 0x00, 0x06, 0x12,
0x02, 0x00, 0x06, 0x12, 0x02, 0x00, 0x06, 0x12,
0x02, 0x00, 0x03, 0x12, 0x03, 0x0A, 0x02, 0x12,
0x03, 0x0A, 0x02, 0x12, 0x09, 0x00, 0x0E, 0x00,
}; };