diff --git a/lib/2d.c b/lib/2d.c index 57298f8..8bd43ab 100755 --- a/lib/2d.c +++ b/lib/2d.c @@ -8,9 +8,9 @@ /* Affiche une ligne entre les points spécifiés */ -void linev(vertex2d *A, vertex2d *B, u8 color) +void linev(vertex2d * A, vertex2d * B, u8 color) { - line(A->x,A->y,B->x,B->y,color); + line(A->x, A->y, B->x, B->y, color); } void line(u32 x1, u32 y1, u32 x2, u32 y2, u8 color) @@ -59,89 +59,96 @@ void line(u32 x1, u32 y1, u32 x2, u32 y2, u8 color) /* Affiche une ligne horizontale entre les points spécifiés */ -void hline(u32 x1, u32 x2, u32 y, u8 color) { - if (x2>x1) - for(;x1<=x2;x1++) - writepxl(x1, y, color); - else - for(;x2<=x1;x2++) - writepxl(x2, y, color); +void hline(u32 x1, u32 x2, u32 y, u8 color) +{ + if (x2 > x1) + for (; x1 <= x2; x1++) + writepxl(x1, y, color); + else + for (; x2 <= x1; x2++) + writepxl(x2, y, color); } - /******************************************************************************/ /* Affiche un triangle rempli entre les points spécifiés */ -void trianglefilled(vertex2d *AA, vertex2d *BB, vertex2d *CC, u8 color) { - vertex2d *A,*B,*C,*TEMP; - u32 a, b, y, last; - int dx1, dx2, dx3, dy1, dy2, dy3 , sa, sb; - A=AA; - B=BB; - C=CC; - while(A->y > B->y || B->y > C->y || A->y == C->y) { - if (A->y > B->y) - swapvertex(A,B); - if (B->y > C->y) - swapvertex(B,C); - if (A->y > C->y) - swapvertex(A,C); - } - if(A->y == C->y) { //meme ligne - a = b = A->x; - if(B->x < a) a = B->x; - else if(B->x > b) b = B->x; - if(C->x < a) a = C->x; - else if(C->x > b) b = C->x; - hline(a, b, A->y, color); - return; - } - dx1 = B->x - A->x; - dy1 = B->y - A->y; - dx2 = C->x - A->x; - dy2 = C->y - A->y; - dx3 = C->x - B->x; - dy3 = C->y - B->y; - sa = 0; - sb = 0; +void trianglefilled(vertex2d * AA, vertex2d * BB, vertex2d * CC, u8 color) +{ + vertex2d *A, *B, *C, *TEMP; + u32 a, b, y, last; + int dx1, dx2, dx3, dy1, dy2, dy3, sa, sb; + A = AA; + B = BB; + C = CC; + while (A->y > B->y || B->y > C->y || A->y == C->y) { + if (A->y > B->y) + swapvertex(A, B); + if (B->y > C->y) + swapvertex(B, C); + if (A->y > C->y) + swapvertex(A, C); + } + if (A->y == C->y) { //meme ligne + a = b = A->x; + if (B->x < a) + a = B->x; + else if (B->x > b) + b = B->x; + if (C->x < a) + a = C->x; + else if (C->x > b) + b = C->x; + hline(a, b, A->y, color); + return; + } + dx1 = B->x - A->x; + dy1 = B->y - A->y; + dx2 = C->x - A->x; + dy2 = C->y - A->y; + dx3 = C->x - B->x; + dy3 = C->y - B->y; + sa = 0; + sb = 0; - if(B->y == C->y) - last = B->y; - else - last = B->y-1; + if (B->y == C->y) + last = B->y; + else + last = B->y - 1; - for(y=A->y; y<=last; y++) { - a = A->x + sa / dy1; - b = A->x + sb / dy2; - sa += dx1; - sb += dx2; - hline(a, b, y, color); - } + for (y = A->y; y <= last; y++) { + a = A->x + sa / dy1; + b = A->x + sb / dy2; + sa += dx1; + sb += dx2; + hline(a, b, y, color); + } - sa = dx3 * (y - B->y); - sb = dx2 * (y - A->y); - for(; y<=C->y; y++) { - a = B->x + sa / dy3; - b = A->x + sb / dy2; - sa += dx3; - sb += dx2; - hline(a, b, y, color); - } + sa = dx3 * (y - B->y); + sb = dx2 * (y - A->y); + for (; y <= C->y; y++) { + a = B->x + sa / dy3; + b = A->x + sb / dy2; + sa += dx3; + sb += dx2; + hline(a, b, y, color); + } } -void swapvertex(vertex2d* A, vertex2d* B){ - vertex2d temp = *A; - *A = *B; - *B = temp; +void swapvertex(vertex2d * A, vertex2d * B) +{ + vertex2d temp = *A; + *A = *B; + *B = temp; } /******************************************************************************/ /* Affiche un triangle entre les points spécifiés */ -void triangle(vertex2d *AA, vertex2d *BB, vertex2d *CC, u8 color) { - line(AA->x,AA->y,BB->x,BB->y,color); - line(BB->x,BB->y,CC->x,CC->y,color); - line(CC->x,CC->y,AA->x,AA->y,color); +void triangle(vertex2d * AA, vertex2d * BB, vertex2d * CC, u8 color) +{ + line(AA->x, AA->y, BB->x, BB->y, color); + line(BB->x, BB->y, CC->x, CC->y, color); + line(CC->x, CC->y, AA->x, AA->y, color); } diff --git a/lib/VGA/8x16fnt.c b/lib/VGA/8x16fnt.c index c084bb9..4ecf372 100755 --- a/lib/VGA/8x16fnt.c +++ b/lib/VGA/8x16fnt.c @@ -1,259 +1,279 @@ -/* Police de caractère fine 8x16 */ -static u8 font8x16 [4096] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7E, 0x81, 0xA5, 0x81, 0x81, 0xBD, 0x99, 0x81, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7E, 0xFF, 0xDB, 0xFF, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x36, 0x7F, 0x7F, 0x7F, 0x7F, 0x3E, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3C, 0x3C, 0xE7, 0xE7, 0xE7, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x7E, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x0F, 0x07, 0x0D, 0x19, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3F, 0x33, 0x3F, 0x30, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7F, 0x63, 0x7F, 0x63, 0x63, 0x63, 0x67, 0xE7, 0xE6, 0xC0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0xDB, 0x3C, 0xE7, 0x3C, 0xDB, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x70, 0x7C, 0x7F, 0x7C, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x03, 0x07, 0x1F, 0x7F, 0x1F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7F, 0xDB, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3E, 0x63, 0x30, 0x1C, 0x36, 0x63, 0x63, 0x36, 0x1C, 0x06, 0x63, 0x3E, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0C, 0x06, 0x7F, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x7F, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x3E, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x3E, 0x3E, 0x1C, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x42, 0x42, 0x42, 0xFF, 0x42, 0x42, 0x42, 0xFF, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x7E, 0x90, 0x90, 0x90, 0x7C, 0x12, 0x12, 0x12, 0xFC, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x61, 0x91, 0x92, 0x64, 0x08, 0x10, 0x26, 0x49, 0x89, 0x86, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x88, 0x88, 0x88, 0x50, 0x60, 0x91, 0x8A, 0x84, 0x4A, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x18, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x18, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x18, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x92, 0x54, 0x38, 0xFE, 0x38, 0x54, 0x92, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x10, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x83, 0x85, 0x89, 0x91, 0xA1, 0xC1, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x30, 0x50, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x7C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x01, 0x02, 0x3C, 0x40, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x01, 0x02, 0x3C, 0x02, 0x01, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x06, 0x0A, 0x12, 0x22, 0x42, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0x80, 0x80, 0x80, 0xFC, 0x02, 0x01, 0x01, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x80, 0xBC, 0xC2, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0x81, 0x01, 0x02, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x81, 0x42, 0x3C, 0x42, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x81, 0x43, 0x3D, 0x01, 0x01, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x10, 0x20, 0x00, 0x00, - 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x44, 0x82, 0x82, 0x04, 0x08, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x99, 0xA5, 0xA5, 0xA5, 0x9E, 0x80, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x24, 0x42, 0x81, 0x81, 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFC, 0x42, 0x41, 0x41, 0x42, 0x7C, 0x42, 0x41, 0x41, 0x42, 0xFC, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFC, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0xFC, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x81, 0x80, 0x9F, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x82, 0x84, 0x88, 0x90, 0xE0, 0x90, 0x88, 0x84, 0x82, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0xC3, 0xA5, 0x99, 0x99, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0xC1, 0xA1, 0x91, 0x89, 0x85, 0x83, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFC, 0x82, 0x81, 0x81, 0x82, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x81, 0x81, 0x81, 0x81, 0x89, 0x85, 0x42, 0x3D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFC, 0x82, 0x81, 0x81, 0x82, 0xFC, 0x90, 0x88, 0x84, 0x82, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x42, 0x81, 0x80, 0x40, 0x3C, 0x02, 0x01, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFE, 0x92, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x99, 0x99, 0xA5, 0xA5, 0x42, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x81, 0x81, 0x42, 0x24, 0x18, 0x24, 0x42, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x82, 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0x01, 0x01, 0x02, 0x04, 0x18, 0x20, 0x40, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7E, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7E, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x24, 0x42, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x02, 0x02, 0x7E, 0x82, 0x82, 0x7D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x80, 0x80, 0x80, 0xBC, 0xC2, 0x81, 0x81, 0x81, 0xC2, 0xBC, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x80, 0x80, 0x80, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x3D, 0x43, 0x81, 0x81, 0x81, 0x43, 0x3D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0xFF, 0x80, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0E, 0x11, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x43, 0x81, 0x81, 0x43, 0x3D, 0x01, 0x02, 0x7C, 0x00, 0x00, - 0x00, 0x80, 0x80, 0x80, 0x80, 0xBC, 0xC2, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x08, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x44, 0x38, 0x00, 0x00, - 0x00, 0x80, 0x80, 0x80, 0x80, 0x82, 0x84, 0x88, 0x90, 0xA8, 0xC4, 0x82, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xC4, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xC2, 0x81, 0x81, 0x81, 0xC2, 0xBC, 0x80, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x43, 0x81, 0x81, 0x81, 0x43, 0x3D, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xC1, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x81, 0x80, 0x7E, 0x01, 0x81, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x10, 0x10, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x43, 0x3D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x92, 0x92, 0x92, 0xAA, 0x44, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x42, 0x24, 0x18, 0x24, 0x42, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x43, 0x3D, 0x01, 0x02, 0x7C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x02, 0x04, 0x18, 0x20, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x08, 0x10, 0x10, 0x10, 0x20, 0x10, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x20, 0x10, 0x10, 0x10, 0x08, 0x10, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x99, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x36, 0x63, 0x63, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1E, 0x33, 0x61, 0x60, 0x60, 0x61, 0x33, 0x1E, 0x06, 0x03, 0x3E, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x0C, 0x18, 0x00, 0x3E, 0x63, 0x7F, 0x60, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x1C, 0x36, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0x66, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x18, 0x0C, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1C, 0x36, 0x1C, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x60, 0x66, 0x3C, 0x0C, 0x06, 0x3C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x1C, 0x36, 0x00, 0x3E, 0x63, 0x7F, 0x60, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0x66, 0x00, 0x3E, 0x63, 0x7F, 0x60, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x18, 0x0C, 0x00, 0x3E, 0x63, 0x7F, 0x60, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x3C, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x63, 0x63, 0x08, 0x1C, 0x36, 0x63, 0x63, 0x7F, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1C, 0x36, 0x1C, 0x00, 0x1C, 0x36, 0x63, 0x63, 0x7F, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0C, 0x18, 0x30, 0x00, 0x7F, 0x33, 0x30, 0x3E, 0x30, 0x33, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6E, 0x3B, 0x1B, 0x7E, 0xD8, 0xDC, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0x36, 0x66, 0x66, 0x7F, 0x66, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x1C, 0x36, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x63, 0x63, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x18, 0x0C, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x3C, 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x18, 0x0C, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x63, 0x63, 0x00, 0x63, 0x63, 0x63, 0x63, 0x3F, 0x03, 0x06, 0x3C, 0x00, 0x00, 0x00, - 0x00, 0x63, 0x63, 0x1C, 0x36, 0x63, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x63, 0x63, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x18, 0x7E, 0xC3, 0xC0, 0xC0, 0xC3, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1C, 0x36, 0x32, 0x30, 0x78, 0x30, 0x30, 0x30, 0x73, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xC3, 0x66, 0x3C, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFC, 0x66, 0x66, 0x7C, 0x62, 0x66, 0x6F, 0x66, 0x66, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0E, 0x1B, 0x18, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x18, 0xD8, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x0C, 0x18, 0x30, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0C, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0C, 0x18, 0x30, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0C, 0x18, 0x30, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3B, 0x6E, 0x00, 0x6E, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3B, 0x6E, 0x00, 0x63, 0x73, 0x7B, 0x7F, 0x6F, 0x67, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x6C, 0x6C, 0x3E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0xE0, 0x63, 0x66, 0x6C, 0x18, 0x30, 0x6E, 0xC3, 0x06, 0x0C, 0x1F, 0x00, 0x00, 0x00, - 0x00, 0x60, 0xE0, 0x63, 0x66, 0x6C, 0x18, 0x33, 0x67, 0xCF, 0x1F, 0x03, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1B, 0x36, 0x6C, 0x36, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6C, 0x36, 0x1B, 0x36, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x00, 0x00, - 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x00, 0x00, - 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x6E, 0x6C, 0x6C, 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3E, 0x63, 0x7E, 0x63, 0x63, 0x7E, 0x60, 0x60, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7F, 0x63, 0x63, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7F, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7F, 0x63, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x63, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6C, 0x6C, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3B, 0x6E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7E, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x36, 0x63, 0x63, 0x7F, 0x63, 0x63, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x36, 0x36, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1E, 0x30, 0x18, 0x0C, 0x3E, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xDB, 0xDB, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x06, 0x7E, 0xDB, 0xDB, 0xF3, 0x7E, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x30, 0x60, 0x60, 0x7C, 0x60, 0x60, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0E, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xD8, 0xD8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3B, 0x6E, 0x00, 0x3B, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xEC, 0x6C, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xD8, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0xD8, 0x30, 0x60, 0xC8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +/* Police de caractère fine 8x16 */ +static u8 font8x16[4096] = + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x81, 0xA5, 0x81, 0x81, 0xBD, 0x99, 0x81, 0x7E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0xDB, 0xFF, 0xFF, 0xC3, 0xE7, 0xFF, +0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7F, 0x7F, 0x7F, 0x7F, 0x3E, +0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x3E, +0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0xE7, 0xE7, +0xE7, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x7E, 0xFF, +0xFF, 0x7E, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x0F, 0x07, 0x0D, 0x19, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3F, 0x33, 0x3F, 0x30, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7F, 0x63, 0x7F, 0x63, 0x63, 0x63, 0x67, 0xE7, 0xE6, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xDB, 0x3C, 0xE7, 0x3C, 0xDB, 0x18, 0x18, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x70, 0x7C, 0x7F, 0x7C, 0x70, 0x60, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x1F, 0x7F, 0x1F, 0x07, 0x03, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x7E, +0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, +0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDB, 0xDB, 0xDB, 0x7B, +0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x63, 0x30, 0x1C, 0x36, +0x63, 0x63, 0x36, 0x1C, 0x06, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, +0x7E, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, +0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0C, 0x06, 0x7F, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x7F, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x3E, 0x7F, 0x7F, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x3E, 0x3E, 0x1C, 0x1C, 0x08, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, +0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0xFF, 0x42, 0x42, +0x42, 0xFF, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7E, 0x90, 0x90, 0x90, +0x7C, 0x12, 0x12, 0x12, 0xFC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x91, 0x92, +0x64, 0x08, 0x10, 0x26, 0x49, 0x89, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x88, 0x88, +0x88, 0x50, 0x60, 0x91, 0x8A, 0x84, 0x4A, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, +0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, +0x18, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, +0x60, 0x18, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x92, 0x54, 0x38, 0xFE, 0x38, 0x54, 0x92, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x10, +0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, +0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, +0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x83, 0x85, 0x89, 0x91, 0xA1, 0xC1, +0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x50, 0x10, 0x10, 0x10, 0x10, +0x10, 0x10, 0x10, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0x01, 0x02, 0x3C, +0x40, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0x01, 0x02, +0x3C, 0x02, 0x01, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0A, 0x12, +0x22, 0x42, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x80, +0x80, 0xFC, 0x02, 0x01, 0x01, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, +0x81, 0x80, 0xBC, 0xC2, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0x81, 0x01, 0x02, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3C, 0x42, 0x81, 0x81, 0x42, 0x3C, 0x42, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3C, 0x42, 0x81, 0x81, 0x43, 0x3D, 0x01, 0x01, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x10, +0x20, 0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, +0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x04, 0x08, 0x10, 0x10, +0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0x99, 0xA5, 0xA5, 0xA5, +0x9E, 0x80, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x81, 0x81, 0xFF, +0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x42, 0x41, 0x41, 0x42, +0x7C, 0x42, 0x41, 0x41, 0x42, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0x81, +0x80, 0x80, 0x80, 0x80, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x42, 0x41, +0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, +0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0x80, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3C, 0x42, 0x81, 0x81, 0x80, 0x9F, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, +0x00, 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, 0x00, +0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x44, 0x38, 0x00, +0x00, 0x00, 0x00, 0x00, 0x81, 0x82, 0x84, 0x88, 0x90, 0xE0, 0x90, 0x88, 0x84, 0x82, 0x81, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xA5, 0x99, 0x99, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC1, 0xA1, 0x91, 0x89, 0x85, 0x83, 0x81, +0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0x81, 0x81, 0x81, 0x81, +0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x82, 0x81, 0x81, 0x82, 0xFC, +0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0x81, 0x81, +0x81, 0x81, 0x89, 0x85, 0x42, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x82, 0x81, 0x81, +0x82, 0xFC, 0x90, 0x88, 0x84, 0x82, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, +0x80, 0x40, 0x3C, 0x02, 0x01, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x92, +0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, +0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x99, 0x99, 0xA5, 0xA5, 0x42, 0x00, 0x00, 0x00, +0x00, 0x00, 0x81, 0x81, 0x81, 0x42, 0x24, 0x18, 0x24, 0x42, 0x81, 0x81, 0x81, 0x00, 0x00, +0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x01, 0x02, 0x04, 0x18, 0x20, 0x40, 0x80, 0x80, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, +0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, +0x02, 0x02, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x81, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x7C, 0x02, 0x02, 0x7E, 0x82, 0x82, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +0x80, 0xBC, 0xC2, 0x81, 0x81, 0x81, 0xC2, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3C, 0x42, 0x80, 0x80, 0x80, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x01, 0x01, 0x01, 0x3D, 0x43, 0x81, 0x81, 0x81, 0x43, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0xFF, 0x80, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0E, 0x11, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x43, 0x81, 0x81, 0x43, 0x3D, 0x01, 0x02, 0x7C, +0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xBC, 0xC2, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, +0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x82, 0x84, 0x88, 0x90, 0xA8, +0xC4, 0x82, 0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, +0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x92, 0x92, +0x92, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xC4, +0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, +0x42, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xBC, 0xC2, 0x81, 0x81, 0x81, 0xC2, 0xBC, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3D, 0x43, 0x81, 0x81, 0x81, 0x43, 0x3D, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xBE, 0xC1, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7E, 0x81, 0x80, 0x7E, 0x01, 0x81, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x10, +0x10, 0x10, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x43, 0x3D, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x42, 0x24, 0x18, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x92, 0x92, 0x92, 0xAA, 0x44, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x42, 0x24, 0x18, 0x24, 0x42, 0x81, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x43, 0x3D, +0x01, 0x02, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x02, 0x04, 0x18, 0x20, +0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, 0x10, 0x10, 0x20, 0x10, 0x10, +0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, +0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x10, 0x10, 0x08, +0x10, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x99, 0x0E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, +0x1C, 0x36, 0x63, 0x63, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x33, +0x61, 0x60, 0x60, 0x61, 0x33, 0x1E, 0x06, 0x03, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, +0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, +0x0C, 0x18, 0x00, 0x3E, 0x63, 0x7F, 0x60, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x08, 0x1C, 0x36, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x66, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x30, 0x18, 0x0C, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1C, 0x36, 0x1C, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x60, 0x66, 0x3C, 0x0C, 0x06, 0x3C, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x36, 0x00, 0x3E, 0x63, 0x7F, 0x60, 0x63, 0x3E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x3E, 0x63, 0x7F, 0x60, 0x63, +0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x00, 0x3E, 0x63, 0x7F, 0x60, +0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, +0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x66, 0x00, 0x38, 0x18, +0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, +0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x08, 0x1C, +0x36, 0x63, 0x63, 0x7F, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x36, 0x1C, 0x00, +0x1C, 0x36, 0x63, 0x63, 0x7F, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, +0x00, 0x7F, 0x33, 0x30, 0x3E, 0x30, 0x33, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x6E, 0x3B, 0x1B, 0x7E, 0xD8, 0xDC, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1F, 0x36, 0x66, 0x66, 0x7F, 0x66, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x1C, 0x36, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x63, 0x63, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3B, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3B, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x00, 0x63, 0x63, 0x63, 0x63, 0x3F, +0x03, 0x06, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x1C, 0x36, 0x63, 0x63, 0x63, 0x63, +0x36, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x00, 0x63, 0x63, 0x63, 0x63, +0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0xC3, 0xC0, 0xC0, +0xC3, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x36, 0x32, 0x30, 0x78, +0x30, 0x30, 0x30, 0x73, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x66, 0x3C, +0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x66, 0x66, +0x7C, 0x62, 0x66, 0x6F, 0x66, 0x66, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1B, +0x18, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x18, 0xD8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, +0x18, 0x30, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0C, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0C, 0x18, 0x30, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0C, 0x18, 0x30, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3B, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3B, 0x6E, 0x00, 0x6E, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3B, 0x6E, 0x00, 0x63, 0x73, 0x7B, 0x7F, 0x6F, 0x67, 0x63, 0x63, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x6C, 0x6C, 0x3E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30, 0x63, +0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x60, +0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, +0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0x63, 0x66, 0x6C, +0x18, 0x30, 0x6E, 0xC3, 0x06, 0x0C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0x63, 0x66, +0x6C, 0x18, 0x33, 0x67, 0xCF, 0x1F, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, +0x00, 0x18, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1B, 0x36, 0x6C, 0x36, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x6C, 0x36, 0x1B, 0x36, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x00, 0x00, + 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x00, +0x00, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, +0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, +0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, +0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, +0x18, 0x18, 0x18, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, +0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, +0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0xF8, +0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, +0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, +0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, +0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, +0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, +0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, +0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, +0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, +0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, +0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, +0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, +0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, +0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x36, 0x36, 0x36, +0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, +0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, +0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36, 0x36, +0x36, 0x36, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, +0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, +0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, +0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, +0x18, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xF0, +0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x6E, 0x6C, 0x6C, 0x6E, 0x3B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x63, 0x7E, 0x63, 0x63, 0x7E, 0x60, 0x60, +0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x63, 0x63, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x36, 0x36, 0x36, 0x36, 0x36, +0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x63, 0x30, 0x18, 0x0C, 0x18, 0x30, +0x63, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6C, 0x6C, +0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, +0x33, 0x3E, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x6E, +0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x18, 0x3C, +0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x36, +0x63, 0x63, 0x7F, 0x63, 0x63, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, +0x36, 0x63, 0x63, 0x63, 0x36, 0x36, 0x36, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1E, 0x30, 0x18, 0x0C, 0x3E, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7E, 0xDB, 0xDB, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x06, 0x7E, 0xDB, 0xDB, 0xF3, 0x7E, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1C, 0x30, 0x60, 0x60, 0x7C, 0x60, 0x60, 0x30, 0x1C, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x00, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, +0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, +0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1B, 0x1B, 0x18, 0x18, 0x18, +0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, +0x18, 0xD8, 0xD8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, +0xFF, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, +0x6E, 0x00, 0x3B, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6C, 0x6C, +0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xEC, 0x6C, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xD8, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x70, 0xD8, 0x30, 0x60, 0xC8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00 +}; + + diff --git a/lib/VGA/8x8fnt.c b/lib/VGA/8x8fnt.c index c8a8e38..d173e55 100755 --- a/lib/VGA/8x8fnt.c +++ b/lib/VGA/8x8fnt.c @@ -1,131 +1,142 @@ -/* Police de caractère fine 8x8 */ -static u8 font8x8 [2048] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E, - 0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E, 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, - 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x38, 0x7C, 0x38, 0xFE, 0xFE, 0x7C, 0x38, 0x7C, - 0x10, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x7C, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF, 0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00, - 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF, 0x0F, 0x07, 0x0F, 0x7D, 0xCC, 0xCC, 0xCC, 0x78, - 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x3F, 0x33, 0x3F, 0x30, 0x30, 0x70, 0xF0, 0xE0, - 0x7F, 0x63, 0x7F, 0x63, 0x63, 0x67, 0xE6, 0xC0, 0x99, 0x5A, 0x3C, 0xE7, 0xE7, 0x3C, 0x5A, 0x99, - 0x80, 0xE0, 0xF8, 0xFE, 0xF8, 0xE0, 0x80, 0x00, 0x02, 0x0E, 0x3E, 0xFE, 0x3E, 0x0E, 0x02, 0x00, - 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00, - 0x7F, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x1B, 0x00, 0x3E, 0x63, 0x38, 0x6C, 0x6C, 0x38, 0xCC, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x7E, 0x3C, 0x18, 0xFF, - 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, - 0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x30, 0x60, 0xFE, 0x60, 0x30, 0x00, 0x00, - 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, 0x00, 0x00, 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00, - 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x40, 0x00, - 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x50, 0xF8, 0x50, 0xF8, 0x50, 0x50, 0x00, - 0x20, 0x78, 0xA0, 0x70, 0x28, 0xF0, 0x20, 0x00, 0xC8, 0xC8, 0x10, 0x20, 0x40, 0x98, 0x98, 0x00, - 0x70, 0x88, 0x50, 0x20, 0x54, 0x88, 0x74, 0x00, 0x60, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x40, 0x80, 0x80, 0x80, 0x40, 0x20, 0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x20, 0xA8, 0x70, 0x70, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, - 0x70, 0x88, 0x98, 0xA8, 0xC8, 0x88, 0x70, 0x00, 0x40, 0xC0, 0x40, 0x40, 0x40, 0x40, 0xE0, 0x00, - 0x70, 0x88, 0x08, 0x10, 0x20, 0x40, 0xF8, 0x00, 0x70, 0x88, 0x08, 0x10, 0x08, 0x88, 0x70, 0x00, - 0x08, 0x18, 0x28, 0x48, 0xFC, 0x08, 0x08, 0x00, 0xF8, 0x80, 0x80, 0xF0, 0x08, 0x88, 0x70, 0x00, - 0x20, 0x40, 0x80, 0xF0, 0x88, 0x88, 0x70, 0x00, 0xF8, 0x08, 0x10, 0x20, 0x40, 0x40, 0x40, 0x00, - 0x70, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70, 0x00, 0x70, 0x88, 0x88, 0x78, 0x08, 0x08, 0x70, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x20, - 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0x00, - 0x80, 0x40, 0x20, 0x10, 0x20, 0x40, 0x80, 0x00, 0x78, 0x84, 0x04, 0x08, 0x10, 0x00, 0x10, 0x00, - 0x70, 0x88, 0x88, 0xA8, 0xB8, 0x80, 0x78, 0x00, 0x20, 0x50, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, - 0xF0, 0x88, 0x88, 0xF0, 0x88, 0x88, 0xF0, 0x00, 0x70, 0x88, 0x80, 0x80, 0x80, 0x88, 0x70, 0x00, - 0xF0, 0x88, 0x88, 0x88, 0x88, 0x88, 0xF0, 0x00, 0xF8, 0x80, 0x80, 0xE0, 0x80, 0x80, 0xF8, 0x00, - 0xF8, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x80, 0x00, 0x70, 0x88, 0x80, 0x80, 0x98, 0x88, 0x78, 0x00, - 0x88, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x88, 0x00, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xE0, 0x00, - 0x38, 0x10, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, 0x88, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x88, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xF8, 0x00, 0x82, 0xC6, 0xAA, 0x92, 0x82, 0x82, 0x82, 0x00, - 0x84, 0xC4, 0xA4, 0x94, 0x8C, 0x84, 0x84, 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, - 0xF0, 0x88, 0x88, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x70, 0x88, 0x88, 0x88, 0xA8, 0x90, 0x68, 0x00, - 0xF0, 0x88, 0x88, 0xF0, 0xA0, 0x90, 0x88, 0x00, 0x70, 0x88, 0x80, 0x70, 0x08, 0x88, 0x70, 0x00, - 0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, - 0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x20, 0x00, 0x82, 0x82, 0x82, 0x82, 0x92, 0x92, 0x6C, 0x00, - 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88, 0x00, 0x88, 0x88, 0x88, 0x50, 0x20, 0x20, 0x20, 0x00, - 0xF8, 0x08, 0x10, 0x20, 0x40, 0x80, 0xF8, 0x00, 0xE0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xE0, 0x00, - 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, 0xE0, 0x00, - 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, - 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x08, 0x78, 0x88, 0x74, 0x00, - 0x80, 0x80, 0xB0, 0xC8, 0x88, 0xC8, 0xB0, 0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0x88, 0x70, 0x00, - 0x08, 0x08, 0x68, 0x98, 0x88, 0x98, 0x68, 0x00, 0x00, 0x00, 0x70, 0x88, 0xF8, 0x80, 0x70, 0x00, - 0x30, 0x48, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x34, 0x48, 0x48, 0x38, 0x08, 0x30, - 0x80, 0x80, 0xB0, 0xC8, 0x88, 0x88, 0x88, 0x00, 0x20, 0x00, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, - 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x90, 0x60, 0x80, 0x80, 0x88, 0x90, 0xA0, 0xD0, 0x88, 0x00, - 0xC0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xE0, 0x00, 0x00, 0x00, 0xEC, 0x92, 0x92, 0x92, 0x92, 0x00, - 0x00, 0x00, 0xB0, 0xC8, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, - 0x00, 0x00, 0xB0, 0xC8, 0xC8, 0xB0, 0x80, 0x80, 0x00, 0x00, 0x68, 0x98, 0x98, 0x68, 0x08, 0x08, - 0x00, 0x00, 0xB0, 0xC8, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x78, 0x80, 0x70, 0x08, 0xF0, 0x00, - 0x40, 0x40, 0xE0, 0x40, 0x40, 0x50, 0x20, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x98, 0x68, 0x00, - 0x00, 0x00, 0x88, 0x88, 0x88, 0x50, 0x20, 0x00, 0x00, 0x00, 0x82, 0x82, 0x92, 0x92, 0x6C, 0x00, - 0x00, 0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, 0x98, 0x68, 0x08, 0x70, - 0x00, 0x00, 0xF8, 0x10, 0x20, 0x40, 0xF8, 0x00, 0x10, 0x20, 0x20, 0x40, 0x20, 0x20, 0x10, 0x00, - 0x40, 0x40, 0x40, 0x00, 0x40, 0x40, 0x40, 0x00, 0x40, 0x20, 0x20, 0x10, 0x20, 0x20, 0x40, 0x00, - 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0x00, - 0x3E, 0x60, 0xC0, 0x60, 0x3E, 0x08, 0x04, 0x18, 0x00, 0x48, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, - 0x18, 0x20, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x10, 0x28, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, - 0x00, 0x48, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x30, 0x08, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, - 0x48, 0x30, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x10, 0x08, 0x30, - 0x30, 0x48, 0x84, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00, 0x48, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, - 0x30, 0x08, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00, 0x48, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x48, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x10, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x48, 0x00, 0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0x30, 0x48, 0x30, 0x48, 0x84, 0xFC, 0x84, 0x84, - 0x18, 0x20, 0x00, 0xF8, 0x80, 0xF0, 0x80, 0xF8, 0x00, 0x00, 0x00, 0x66, 0x19, 0x77, 0x88, 0x77, - 0x00, 0x00, 0x00, 0x0F, 0x14, 0x3E, 0x44, 0x87, 0x30, 0x48, 0x84, 0x78, 0xCC, 0xCC, 0xCC, 0x78, - 0x00, 0x48, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x60, 0x10, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, - 0x30, 0x48, 0x84, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x60, 0x10, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, - 0x48, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8, 0x44, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0x6C, 0x38, - 0x24, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x08, 0x1C, 0x28, 0x28, 0x1C, 0x08, 0x00, - 0x1C, 0x22, 0x20, 0x70, 0x20, 0x22, 0x5C, 0x00, 0x44, 0x28, 0x10, 0x10, 0x38, 0x10, 0x38, 0x10, - 0xF0, 0x88, 0x8A, 0xF7, 0x82, 0x82, 0x83, 0x00, 0x06, 0x08, 0x08, 0x3C, 0x10, 0x10, 0x60, 0x00, - 0x18, 0x20, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x18, 0x20, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x18, 0x20, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x18, 0x20, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, - 0x80, 0x78, 0x04, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x80, 0x7E, 0x01, 0xC6, 0xE6, 0xD6, 0xCE, 0xC6, - 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00, 0xFE, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0xFC, - 0x00, 0x00, 0x18, 0x18, 0x30, 0x60, 0x66, 0x3C, 0xFF, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xC4, 0x48, 0x50, 0x26, 0x49, 0x82, 0x07, - 0x40, 0xC4, 0x48, 0x50, 0x26, 0x4A, 0x9F, 0x02, 0x00, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x00, 0x12, 0x24, 0x48, 0x90, 0x48, 0x24, 0x12, 0x00, 0x48, 0x24, 0x12, 0x09, 0x12, 0x24, 0x48, - 0x49, 0x00, 0x92, 0x00, 0x49, 0x00, 0x92, 0x00, 0x6D, 0x00, 0xB6, 0x00, 0x6D, 0x00, 0xB6, 0x00, - 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x10, 0x10, - 0x28, 0x28, 0x28, 0x28, 0xE8, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x28, 0x28, 0x28, - 0x00, 0x00, 0x00, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0x28, 0x28, 0x28, 0xE8, 0x08, 0xE8, 0x28, 0x28, - 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0xF8, 0x08, 0xE8, 0x28, 0x28, - 0x28, 0x28, 0x28, 0xE8, 0x08, 0xF8, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0xF8, 0x00, 0x00, 0x00, - 0x10, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x10, 0x10, 0x28, 0x28, 0x28, 0x28, 0x3F, 0x28, 0x28, 0x28, - 0x28, 0x28, 0x28, 0x2F, 0x20, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x2F, 0x28, 0x28, - 0x28, 0x28, 0x28, 0xEF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xEF, 0x28, 0x28, - 0x28, 0x28, 0x28, 0x2F, 0x20, 0x2F, 0x28, 0x28, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, - 0x28, 0x28, 0x28, 0xEF, 0x00, 0xEF, 0x28, 0x28, 0x10, 0x10, 0x10, 0xFF, 0x00, 0xFF, 0x00, 0x00, - 0x28, 0x28, 0x28, 0x28, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x10, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x3F, 0x00, 0x00, 0x00, - 0x10, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x1F, 0x10, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0xFF, 0x28, 0x28, 0x28, - 0x10, 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x34, 0x4C, 0x4C, 0x32, 0x00, 0x5C, 0x22, 0x22, 0x3C, 0x44, 0x44, 0x78, - 0x7E, 0x42, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x02, 0x7C, 0xA8, 0x28, 0x28, 0x44, - 0x00, 0x7E, 0x61, 0x30, 0x18, 0x08, 0x10, 0x20, 0x00, 0x00, 0x08, 0x7F, 0x88, 0x88, 0x88, 0x70, - 0x00, 0x00, 0x00, 0x22, 0x44, 0x44, 0x7A, 0x80, 0x00, 0x00, 0x00, 0x7C, 0x10, 0x10, 0x10, 0x10, - 0x00, 0x1C, 0x08, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x00, 0x38, 0x44, 0x44, 0x7C, 0x44, 0x44, - 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0x66, 0x24, 0x66, 0x0C, 0x10, 0x08, 0x1C, 0x22, 0x22, 0x22, 0x1C, - 0x00, 0x00, 0x00, 0x00, 0x6C, 0x92, 0x92, 0x6C, 0x00, 0x01, 0x1A, 0x26, 0x2A, 0x32, 0x2C, 0x40, - 0x00, 0x18, 0x20, 0x20, 0x30, 0x20, 0x20, 0x18, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, - 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x3E, - 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, 0x3E, 0x00, 0x04, 0x08, 0x10, 0x08, 0x04, 0x00, 0x3E, - 0x00, 0x06, 0x09, 0x09, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x48, 0x48, 0x30, - 0x00, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x60, 0x92, 0x0C, 0x60, 0x92, 0x0C, 0x00, - 0x60, 0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0xC8, 0x28, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x7C, 0x42, 0x42, 0x42, 0x00, 0x18, 0x24, 0x08, 0x10, 0x3C, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +/* Police de caractère fine 8x8 */ +static u8 font8x8[2048] = + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x81, 0xA5, 0x81, +0xBD, 0x99, 0x81, 0x7E, 0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E, 0x6C, 0xFE, 0xFE, +0xFE, 0x7C, 0x38, 0x10, 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x38, 0x7C, +0x38, 0xFE, 0xFE, 0x7C, 0x38, 0x7C, 0x10, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x7C, 0x00, +0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF, +0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00, 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, +0xFF, 0x0F, 0x07, 0x0F, 0x7D, 0xCC, 0xCC, 0xCC, 0x78, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, +0x7E, 0x18, 0x3F, 0x33, 0x3F, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0x7F, 0x63, 0x7F, 0x63, 0x63, +0x67, 0xE6, 0xC0, 0x99, 0x5A, 0x3C, 0xE7, 0xE7, 0x3C, 0x5A, 0x99, 0x80, 0xE0, 0xF8, 0xFE, +0xF8, 0xE0, 0x80, 0x00, 0x02, 0x0E, 0x3E, 0xFE, 0x3E, 0x0E, 0x02, 0x00, 0x18, 0x3C, 0x7E, +0x18, 0x18, 0x7E, 0x3C, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00, 0x7F, 0xDB, +0xDB, 0x7B, 0x1B, 0x1B, 0x1B, 0x00, 0x3E, 0x63, 0x38, 0x6C, 0x6C, 0x38, 0xCC, 0x78, 0x00, +0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x7E, 0x3C, 0x18, 0xFF, + 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, +0x00, 0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x30, 0x60, 0xFE, 0x60, 0x30, +0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, 0x00, 0x00, 0x00, 0x24, 0x66, 0xFF, 0x66, +0x24, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7E, +0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, +0x40, 0x40, 0x00, 0x40, 0x00, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x50, +0xF8, 0x50, 0xF8, 0x50, 0x50, 0x00, 0x20, 0x78, 0xA0, 0x70, 0x28, 0xF0, 0x20, 0x00, 0xC8, +0xC8, 0x10, 0x20, 0x40, 0x98, 0x98, 0x00, 0x70, 0x88, 0x50, 0x20, 0x54, 0x88, 0x74, 0x00, +0x60, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x80, 0x80, 0x80, 0x40, 0x20, +0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, 0x20, 0xA8, 0x70, 0x70, 0xA8, +0x20, 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x60, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x60, 0x60, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x70, 0x88, 0x98, +0xA8, 0xC8, 0x88, 0x70, 0x00, 0x40, 0xC0, 0x40, 0x40, 0x40, 0x40, 0xE0, 0x00, 0x70, 0x88, +0x08, 0x10, 0x20, 0x40, 0xF8, 0x00, 0x70, 0x88, 0x08, 0x10, 0x08, 0x88, 0x70, 0x00, 0x08, +0x18, 0x28, 0x48, 0xFC, 0x08, 0x08, 0x00, 0xF8, 0x80, 0x80, 0xF0, 0x08, 0x88, 0x70, 0x00, + 0x20, 0x40, 0x80, 0xF0, 0x88, 0x88, 0x70, 0x00, 0xF8, 0x08, 0x10, 0x20, 0x40, 0x40, 0x40, +0x00, 0x70, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70, 0x00, 0x70, 0x88, 0x88, 0x78, 0x08, 0x08, +0x70, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, +0x60, 0x60, 0x20, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0xF8, 0x00, +0xF8, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x20, 0x40, 0x80, 0x00, 0x78, 0x84, 0x04, +0x08, 0x10, 0x00, 0x10, 0x00, 0x70, 0x88, 0x88, 0xA8, 0xB8, 0x80, 0x78, 0x00, 0x20, 0x50, +0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0xF0, 0x88, 0x88, 0xF0, 0x88, 0x88, 0xF0, 0x00, 0x70, +0x88, 0x80, 0x80, 0x80, 0x88, 0x70, 0x00, 0xF0, 0x88, 0x88, 0x88, 0x88, 0x88, 0xF0, 0x00, +0xF8, 0x80, 0x80, 0xE0, 0x80, 0x80, 0xF8, 0x00, 0xF8, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x80, +0x00, 0x70, 0x88, 0x80, 0x80, 0x98, 0x88, 0x78, 0x00, 0x88, 0x88, 0x88, 0xF8, 0x88, 0x88, +0x88, 0x00, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xE0, 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, +0x90, 0x60, 0x00, 0x88, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x88, 0x00, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0xF8, 0x00, 0x82, 0xC6, 0xAA, 0x92, 0x82, 0x82, 0x82, 0x00, 0x84, 0xC4, 0xA4, +0x94, 0x8C, 0x84, 0x84, 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0xF0, 0x88, +0x88, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x70, 0x88, 0x88, 0x88, 0xA8, 0x90, 0x68, 0x00, 0xF0, +0x88, 0x88, 0xF0, 0xA0, 0x90, 0x88, 0x00, 0x70, 0x88, 0x80, 0x70, 0x08, 0x88, 0x70, 0x00, + 0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, +0x00, 0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x20, 0x00, 0x82, 0x82, 0x82, 0x82, 0x92, 0x92, +0x6C, 0x00, 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88, 0x00, 0x88, 0x88, 0x88, 0x50, 0x20, +0x20, 0x20, 0x00, 0xF8, 0x08, 0x10, 0x20, 0x40, 0x80, 0xF8, 0x00, 0xE0, 0x80, 0x80, 0x80, +0x80, 0x80, 0xE0, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0xE0, 0x20, 0x20, +0x20, 0x20, 0x20, 0xE0, 0x00, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x70, 0x08, 0x78, 0x88, 0x74, 0x00, 0x80, 0x80, 0xB0, 0xC8, 0x88, 0xC8, 0xB0, 0x00, +0x00, 0x00, 0x70, 0x88, 0x80, 0x88, 0x70, 0x00, 0x08, 0x08, 0x68, 0x98, 0x88, 0x98, 0x68, +0x00, 0x00, 0x00, 0x70, 0x88, 0xF8, 0x80, 0x70, 0x00, 0x30, 0x48, 0x40, 0xE0, 0x40, 0x40, +0x40, 0x00, 0x00, 0x00, 0x34, 0x48, 0x48, 0x38, 0x08, 0x30, 0x80, 0x80, 0xB0, 0xC8, 0x88, +0x88, 0x88, 0x00, 0x20, 0x00, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, 0x10, 0x00, 0x30, 0x10, +0x10, 0x10, 0x90, 0x60, 0x80, 0x80, 0x88, 0x90, 0xA0, 0xD0, 0x88, 0x00, 0xC0, 0x40, 0x40, +0x40, 0x40, 0x40, 0xE0, 0x00, 0x00, 0x00, 0xEC, 0x92, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, +0xB0, 0xC8, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, +0x00, 0xB0, 0xC8, 0xC8, 0xB0, 0x80, 0x80, 0x00, 0x00, 0x68, 0x98, 0x98, 0x68, 0x08, 0x08, + 0x00, 0x00, 0xB0, 0xC8, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x78, 0x80, 0x70, 0x08, 0xF0, +0x00, 0x40, 0x40, 0xE0, 0x40, 0x40, 0x50, 0x20, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x98, +0x68, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x50, 0x20, 0x00, 0x00, 0x00, 0x82, 0x82, 0x92, +0x92, 0x6C, 0x00, 0x00, 0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, +0x98, 0x68, 0x08, 0x70, 0x00, 0x00, 0xF8, 0x10, 0x20, 0x40, 0xF8, 0x00, 0x10, 0x20, 0x20, +0x40, 0x20, 0x20, 0x10, 0x00, 0x40, 0x40, 0x40, 0x00, 0x40, 0x40, 0x40, 0x00, 0x40, 0x20, +0x20, 0x10, 0x20, 0x20, 0x40, 0x00, 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0x00, 0x3E, 0x60, 0xC0, 0x60, 0x3E, 0x08, 0x04, 0x18, +0x00, 0x48, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x18, 0x20, 0x00, 0x78, 0xCC, 0xFC, 0xC0, +0x78, 0x10, 0x28, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00, 0x48, 0x00, 0x78, 0x0C, 0x7C, +0xCC, 0x76, 0x30, 0x08, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x48, 0x30, 0x00, 0x78, 0x0C, +0x7C, 0xCC, 0x76, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x10, 0x08, 0x30, 0x30, 0x48, 0x84, 0x78, +0xCC, 0xFC, 0xC0, 0x78, 0x00, 0x48, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x30, 0x08, 0x00, +0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00, 0x48, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x48, +0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x10, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x48, +0x00, 0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0x30, 0x48, 0x30, 0x48, 0x84, 0xFC, 0x84, 0x84, + 0x18, 0x20, 0x00, 0xF8, 0x80, 0xF0, 0x80, 0xF8, 0x00, 0x00, 0x00, 0x66, 0x19, 0x77, 0x88, +0x77, 0x00, 0x00, 0x00, 0x0F, 0x14, 0x3E, 0x44, 0x87, 0x30, 0x48, 0x84, 0x78, 0xCC, 0xCC, +0xCC, 0x78, 0x00, 0x48, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x60, 0x10, 0x00, 0x78, 0xCC, +0xCC, 0xCC, 0x78, 0x30, 0x48, 0x84, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x60, 0x10, 0x00, 0xCC, +0xCC, 0xCC, 0xCC, 0x76, 0x48, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8, 0x44, 0x00, 0x38, +0x6C, 0xC6, 0xC6, 0x6C, 0x38, 0x24, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x08, +0x1C, 0x28, 0x28, 0x1C, 0x08, 0x00, 0x1C, 0x22, 0x20, 0x70, 0x20, 0x22, 0x5C, 0x00, 0x44, +0x28, 0x10, 0x10, 0x38, 0x10, 0x38, 0x10, 0xF0, 0x88, 0x8A, 0xF7, 0x82, 0x82, 0x83, 0x00, +0x06, 0x08, 0x08, 0x3C, 0x10, 0x10, 0x60, 0x00, 0x18, 0x20, 0x00, 0x78, 0x0C, 0x7C, 0xCC, +0x76, 0x18, 0x20, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x20, 0x00, 0x78, 0xCC, 0xCC, +0xCC, 0x78, 0x18, 0x20, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x80, 0x78, 0x04, 0xF8, 0xCC, +0xCC, 0xCC, 0xCC, 0x80, 0x7E, 0x01, 0xC6, 0xE6, 0xD6, 0xCE, 0xC6, 0x00, 0x78, 0x0C, 0x7C, +0xCC, 0x76, 0x00, 0xFE, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0xFC, 0x00, 0x00, 0x18, +0x18, 0x30, 0x60, 0x66, 0x3C, 0xFF, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xC4, 0x48, 0x50, 0x26, 0x49, 0x82, 0x07, 0x40, +0xC4, 0x48, 0x50, 0x26, 0x4A, 0x9F, 0x02, 0x00, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x00, 0x12, 0x24, 0x48, 0x90, 0x48, 0x24, 0x12, 0x00, 0x48, 0x24, 0x12, 0x09, 0x12, 0x24, +0x48, 0x49, 0x00, 0x92, 0x00, 0x49, 0x00, 0x92, 0x00, 0x6D, 0x00, 0xB6, 0x00, 0x6D, 0x00, +0xB6, 0x00, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0x10, 0x10, 0x10, 0x10, 0x10, +0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, +0x10, 0xF0, 0x10, 0x10, 0x28, 0x28, 0x28, 0x28, 0xE8, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, +0x00, 0xF8, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0x28, 0x28, +0x28, 0xE8, 0x08, 0xE8, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, +0x00, 0x00, 0xF8, 0x08, 0xE8, 0x28, 0x28, 0x28, 0x28, 0x28, 0xE8, 0x08, 0xF8, 0x00, 0x00, +0x28, 0x28, 0x28, 0x28, 0xF8, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x00, +0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, +0xFF, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, +0x1F, 0x10, 0x1F, 0x10, 0x10, 0x28, 0x28, 0x28, 0x28, 0x3F, 0x28, 0x28, 0x28, 0x28, 0x28, +0x28, 0x2F, 0x20, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x2F, 0x28, 0x28, 0x28, +0x28, 0x28, 0xEF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xEF, 0x28, 0x28, + 0x28, 0x28, 0x28, 0x2F, 0x20, 0x2F, 0x28, 0x28, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, +0x00, 0x28, 0x28, 0x28, 0xEF, 0x00, 0xEF, 0x28, 0x28, 0x10, 0x10, 0x10, 0xFF, 0x00, 0xFF, +0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, +0xFF, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, +0x3F, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1F, 0x10, 0x1F, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x28, 0x28, 0x28, 0x28, 0x28, +0x28, 0x28, 0xFF, 0x28, 0x28, 0x28, 0x10, 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x10, 0x10, 0x10, +0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x34, +0x4C, 0x4C, 0x32, 0x00, 0x5C, 0x22, 0x22, 0x3C, 0x44, 0x44, 0x78, 0x7E, 0x42, 0x42, 0x40, +0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x02, 0x7C, 0xA8, 0x28, 0x28, 0x44, 0x00, 0x7E, 0x61, +0x30, 0x18, 0x08, 0x10, 0x20, 0x00, 0x00, 0x08, 0x7F, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, +0x00, 0x22, 0x44, 0x44, 0x7A, 0x80, 0x00, 0x00, 0x00, 0x7C, 0x10, 0x10, 0x10, 0x10, 0x00, +0x1C, 0x08, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x00, 0x38, 0x44, 0x44, 0x7C, 0x44, 0x44, + 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0x66, 0x24, 0x66, 0x0C, 0x10, 0x08, 0x1C, 0x22, 0x22, 0x22, +0x1C, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x92, 0x92, 0x6C, 0x00, 0x01, 0x1A, 0x26, 0x2A, 0x32, +0x2C, 0x40, 0x00, 0x18, 0x20, 0x20, 0x30, 0x20, 0x20, 0x18, 0x00, 0x3C, 0x42, 0x42, 0x42, +0x42, 0x42, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x08, 0x3E, +0x08, 0x08, 0x00, 0x3E, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, 0x3E, 0x00, 0x04, 0x08, +0x10, 0x08, 0x04, 0x00, 0x3E, 0x00, 0x06, 0x09, 0x09, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, +0x08, 0x08, 0x08, 0x48, 0x48, 0x30, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x00, +0x60, 0x92, 0x0C, 0x60, 0x92, 0x0C, 0x00, 0x60, 0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x30, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, +0x00, 0x00, 0x03, 0x04, 0x04, 0xC8, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x42, 0x42, +0x42, 0x00, 0x18, 0x24, 0x08, 0x10, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, +0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + diff --git a/lib/cpu.c b/lib/cpu.c index 82d8dc5..1073cb7 100755 --- a/lib/cpu.c +++ b/lib/cpu.c @@ -18,14 +18,14 @@ static u8 *msg[] = { "3dNow Extended!", "HyperThreading", "apic", - "64bits", - "syscall", - "msr", - "sse4a", - "vmx", - "sse41", - "sse42", - "apic2" + "64bits", + "syscall", + "msr", + "sse4a", + "vmx", + "sse41", + "sse42", + "apic2" }; static u8 space[] = " "; @@ -99,10 +99,10 @@ u8 getcpuinfos(cpuinfo * proc) proc->apic = ((regedx >> 9) & 0x00000001); proc->now3d = ((regedx >> 30) & 0x00000001); proc->now3d2 = ((regedx >> 31) & 0x00000001); - proc->bits64 = ((regedx >> 29) & 0x00000001); - proc->syscall = ((regedx >> 11) & 0x00000001); - proc->msr = ((regedx >> 5) & 0x00000001); - proc->sse4a = ((regecx >> 6) & 0x00000001); + proc->bits64 = ((regedx >> 29) & 0x00000001); + proc->syscall = ((regedx >> 11) & 0x00000001); + proc->msr = ((regedx >> 5) & 0x00000001); + proc->sse4a = ((regecx >> 6) & 0x00000001); } if (maxextended >= 4) { int i; @@ -143,7 +143,7 @@ u32 viewstack(u32 pointer) void dump_regs() { - cli(); + cli(); u32 eax = 0; u32 ebx = 0; u32 ecx = 0; @@ -167,17 +167,21 @@ void dump_regs() asm("movl %%eax, %[a1] ;" "movl %%ebx, %[b1] ;" "movl %%ecx, %[c1] ;" "movl %%edx, %[d1] ;" "movl %%esi, %[e1] ;" "movl %%edi, %[f1] ;" "movl %%esp, %[g1] ;" "movl %%ebp, %[h1] ;" "movw %%cs, %[i1] ;" "movw %%ds, %[j1] ;" "movw %%es, %[k1] ;" "movw %%fs, %[l1] ;" "movw %%gs, %[m1] ;" "movw %%ss, %[n1] ;" "mov %%cr0, %%eax ;" "mov %%eax, %[o1] ;" "mov %%cr2, %%eax ;" "mov %%eax, %[p1] ;" "mov %%cr3, %%eax ;" "mov %%eax, %[q1] ;" "mov %%cr4, %%eax ;" "mov %%eax,%[r1] ;": [a1] "=m"(eax),[b1] "=m"(ebx),[c1] "=m"(ecx),[d1] "=m"(edx),[e1] "=m"(esi), [f1] "=m"(edi),[g1] "=m"(esp),[h1] "=m"(ebp),[i1] "=m"(cs),[j1] "=m"(ds), -[k1] "=m"(es),[l1] "=m"(fs),[m1] "=m"(gs),[n1] "=m"(ss), [o1] "=m"(cr0),[p1] "=m"(cr2),[q1] "=m"(cr3), [r1] "=m"(cr4)); +[k1] "=m"(es),[l1] "=m"(fs),[m1] "=m"(gs),[n1] "=m"(ss),[o1] "=m"(cr0), +[p1] "=m"(cr2),[q1] "=m"(cr3),[r1] "=m"(cr4)); - printf("EAX=%X EBX=%X ECX=%X EDX=%X\r\n",eax,ebx,ecx,edx); - printf("ESI=%X EDI=%X ESP=%X EBP=%X\r\n",esi,edi,esp,ebp); - printf("\033[1m CS=%hX DS=%hX ES=%hX FS=%hX GS=%hX SS=%hX\033[0m\r\n",(u32)cs,(u32)ds,(u32)es,(u32)fs,(u32)gs,(u32)ss); - printf("CR0=%X CR1=N/A CR2=%X CR3=%X CR4=%X\r\n",cr0,cr2,cr3,cr4); + printf("EAX=%X EBX=%X ECX=%X EDX=%X\r\n", eax, ebx, ecx, edx); + printf("ESI=%X EDI=%X ESP=%X EBP=%X\r\n", esi, edi, esp, ebp); + printf + ("\033[1m CS=%hX DS=%hX ES=%hX FS=%hX GS=%hX SS=%hX\033[0m\r\n", + (u32) cs, (u32) ds, (u32) es, (u32) fs, (u32) gs, (u32) ss); + printf("CR0=%X CR1=N/A CR2=%X CR3=%X CR4=%X\r\n", cr0, cr2, cr3, + cr4); asm("pushf ;" "pop %[f1] ;": [f1] "=m"(eflags)); - printf("EFLAGS=%X",eflags); + printf("EFLAGS=%X", eflags); if (eflags & (1 << 0)) // Carry printf(" (C1"); @@ -210,14 +214,16 @@ void dump_regs() printf(" O0)\r\n"); printf("STACK\r\n"); - u32 i=0; - for (u32 pointer = esp; pointer < 0x400000; pointer+=4) { - if (pointer==ebp) print("\033[1m\033[31m"); - printf("+%d:%X\t\t%X\033[0m\033[37m\r\n", i++, pointer,viewstack(pointer)); - if (i>25) { - print("...\r\n"); - break; - } - } - sti(); + u32 i = 0; + for (u32 pointer = esp; pointer < 0x400000; pointer += 4) { + if (pointer == ebp) + print("\033[1m\033[31m"); + printf("+%d:%X\t\t%X\033[0m\033[37m\r\n", i++, pointer, + viewstack(pointer)); + if (i > 25) { + print("...\r\n"); + break; + } + } + sti(); } diff --git a/lib/gdt.c b/lib/gdt.c index 780226b..c12b3c3 100755 --- a/lib/gdt.c +++ b/lib/gdt.c @@ -2,7 +2,6 @@ #include "asm.h" #include "types.h" - /* registre gdt */ static struct gdtr gdtreg; @@ -18,11 +17,11 @@ static struct tss tss0; void initgdt(u32 offset) { - makegdtdes(0x0, 0x00000, 0x00, 0x00, &gdt[0]); /* descripteur nul */ + makegdtdes(0x0, 0x00000, 0x00, 0x00, &gdt[0]); /* descripteur nul */ makegdtdes(0x0, 0xFFFFF, 0x9B, 0x0D, &gdt[1]); /* code -> SEL_KERNEL_CODE */ - makegdtdes(0x0, 0x00000, 0x97, 0x0D, &gdt[2]); /* pile -> SEL_KERNEL_STACK */ + makegdtdes(0x0, 0x00000, 0x97, 0x0D, &gdt[2]); /* pile -> SEL_KERNEL_STACK */ makegdtdes(0x0, 0xFFFFF, 0xFF, 0x0D, &gdt[3]); /* code -> SEL_USER_CODE */ - makegdtdes(0x0, 0x00000, 0xF7, 0x0D, &gdt[4]); /* pile -> SEL_USER_STACK */ + makegdtdes(0x0, 0x00000, 0xF7, 0x0D, &gdt[4]); /* pile -> SEL_USER_STACK */ makegdtdes(0x0, 0xFFFFF, 0x93, 0x0D, &gdt[5]); /* data -> SEL_KERNEL_DATA */ makegdtdes(0x0, 0xFFFFF, 0xF3, 0x0D, &gdt[6]); /* data -> SEL_USER_DATA */ @@ -48,9 +47,9 @@ void initgdt(u32 offset) /* Initialise le registre de tâche (TSR) */ -void inittr(void) +void inittr(void) { - ltr(SEL_TSS); + ltr(SEL_TSS); } /*******************************************************************************/ @@ -59,7 +58,7 @@ void inittr(void) void initselectors(u32 executingoffset) { -asm(" movw %[data], %%ax \n \ + asm(" movw %[data], %%ax \n \ movw %%ax, %%ds \n \ movw %%ax, %%es \n \ movw %%ax, %%fs \n \ @@ -71,24 +70,21 @@ asm(" movw %[data], %%ax \n \ ljmp %[code], $raz \n \ raz: \n \ pushl %%ebx \n \ - ret\n"::[data] "i"(SEL_KERNEL_DATA),[code] "i"(SEL_KERNEL_CODE), [stack] "i"(SEL_KERNEL_STACK), [stackoff] "i"(STACK_OFFSET), [offset] "m"(executingoffset)); + ret\n"::[data] "i"(SEL_KERNEL_DATA),[code] "i"(SEL_KERNEL_CODE),[stack] "i"(SEL_KERNEL_STACK),[stackoff] "i"(STACK_OFFSET),[offset] "m"(executingoffset)); } /*******************************************************************************/ /* Créé un descripteur GDT */ -void makegdtdes(u32 base, u32 limite, u8 acces, u8 flags, gdtdes *desc) +void makegdtdes(u32 base, u32 limite, u8 acces, u8 flags, gdtdes * desc) { - desc->lim0_15 = (limite & 0xffff); - desc->base0_15 = (base & 0xffff); - desc->base16_23 = (base & 0xff0000) >> 16; - desc->acces = acces; - desc->lim16_19 = (limite & 0xf0000) >> 16; - desc->flags = (flags & 0xf); - desc->base24_31 = (base & 0xff000000) >> 24; - return; + desc->lim0_15 = (limite & 0xffff); + desc->base0_15 = (base & 0xffff); + desc->base16_23 = (base & 0xff0000) >> 16; + desc->acces = acces; + desc->lim16_19 = (limite & 0xf0000) >> 16; + desc->flags = (flags & 0xf); + desc->base24_31 = (base & 0xff000000) >> 24; + return; } - - - diff --git a/lib/interrupts.c b/lib/interrupts.c index d98435c..ce686ff 100755 --- a/lib/interrupts.c +++ b/lib/interrupts.c @@ -557,8 +557,7 @@ void initidt(void) void inittimer() { - outb(TIMER_MODE, RATE_GENERATOR); - outb(TIMER0, (u8) (TIMER_FREQ/HZ) ); - outb(TIMER0, (u8) ((TIMER_FREQ/HZ) >> 8)); + outb(TIMER_MODE, RATE_GENERATOR); + outb(TIMER0, (u8) (TIMER_FREQ / HZ)); + outb(TIMER0, (u8) ((TIMER_FREQ / HZ) >> 8)); } - diff --git a/lib/keyboard.c b/lib/keyboard.c index 958600b..85b1e03 100755 --- a/lib/keyboard.c +++ b/lib/keyboard.c @@ -96,25 +96,25 @@ static const u8 set1_ctrl[] = { /* Attend une chaine de caractère de taille max */ -u8* getstring(u8* temp) { - u8 maxwidth=strlen(temp); - u8 *pointer=temp; - u8 ascii=0; - while(ascii!='\r') { - ascii=waitascii(); - if (ascii=='\b' && pointer>temp) { - pointer--; - putchar(ascii); - } - else if (ascii>31 && pointer<=temp+80) { - *pointer++=ascii; - putchar(ascii); - } - } - *pointer='\000'; - return temp; +u8 *getstring(u8 * temp) +{ + u8 maxwidth = strlen(temp); + u8 *pointer = temp; + u8 ascii = 0; + while (ascii != '\r') { + ascii = waitascii(); + if (ascii == '\b' && pointer > temp) { + pointer--; + putchar(ascii); + } else if (ascii > 31 && pointer <= temp + 80) { + *pointer++ = ascii; + putchar(ascii); + } + } + *pointer = '\000'; + return temp; } - + /******************************************************************************/ /* Fonction qui attend l'appuie d'une touche générant un code ASCII puis le retourne */ @@ -207,12 +207,10 @@ unsigned convert(u32 keypressed) if (bufferscan[lastscan] == 0xE0) kbdstatus |= STATUS_CTRL; return 0; - } - else if (key == SCAN_CTRL) { + } else if (key == SCAN_CTRL) { kbdstatus |= STATUS_CTRL; return 0; - } - else if (key == SCAN_LEFTSHIFT || key == SCAN_RIGHTSHIFT) { + } else if (key == SCAN_LEFTSHIFT || key == SCAN_RIGHTSHIFT) { kbdstatus |= STATUS_SHIFT; return 0; } @@ -233,12 +231,10 @@ unsigned convert(u32 keypressed) else if (key == SCAN_SCROLLLOCK) { kbdstatus ^= STATUS_SCRL; goto LEDS; - } - else if (key == SCAN_NUMLOCK) { + } else if (key == SCAN_NUMLOCK) { kbdstatus ^= STATUS_NUM; goto LEDS; - } - else if (key == SCAN_CAPSLOCK) { + } else if (key == SCAN_CAPSLOCK) { kbdstatus ^= STATUS_CAPS; LEDS: outkbd(0x60, 0xED); /* "mise a jour des LEDS */ diff --git a/lib/makefile b/lib/makefile index cadfe00..bc48e53 100755 --- a/lib/makefile +++ b/lib/makefile @@ -15,6 +15,8 @@ libs.o:$(OBJS) clean: rm -f *.o + rm -f *.c~ + rm -f ./VGA/*.c~ indent: indent -linux -i8 -ts8 *.c diff --git a/lib/math.c b/lib/math.c index 9212f2d..ea2a9c3 100755 --- a/lib/math.c +++ b/lib/math.c @@ -4,82 +4,80 @@ /******************************************************************************/ /* Fonction qui retourne le logarithme 2 */ - -u8 log2(u32 n) { - if (n==0) return 0; - int logValue = -1; - while (n) { - logValue++; - n >>= 1; - } - return logValue+1; - } - + u8 log2(u32 n) +{ + if (n == 0) + return 0; + int logValue = -1; + while (n) { + logValue++; + n >>= 1; + } + return logValue + 1; + } + + /******************************************************************************/ /* Fonction qui retourne le logarithme 10 */ - -u8 log10(u32 n) -{ - return (n >= 1000000000u) ? 9 : (n >= 100000000u) ? 8 : - (n >= 10000000u) ? 7 : (n >= 1000000u) ? 6 : - (n >= 100000u) ? 5 : (n >= 10000u) ? 4 : - (n >= 1000u) ? 3 : (n >= 100u) ? 2 : (n >= 10u) ? 1u : 0u; -} - - + u8 log10(u32 n) +{ + return (n >= 1000000000u) ? 9 : (n >= 100000000u) ? 8 : + (n >= 10000000u) ? 7 : (n >= 1000000u) ? 6 : + (n >= 100000u) ? 5 : (n >= 10000u) ? 4 : + (n >= 1000u) ? 3 : (n >= 100u) ? 2 : (n >= 10u) ? 1u : 0u; + } + + /******************************************************************************/ /* Fonction qui retourne la valeur absolue */ - -u32 abs(int x) { - if (x < 0) - x = -x; - return (u32) x; -} - + u32 abs(int x) +{ + if (x < 0) + x = -x; + return (u32) x; + } + + /******************************************************************************/ -/* Fonction qui initialise le générateur de nombre aléatoire */ - -static u32 seed=0x12341234; - -void randomize() { - seed=gettimer(); -} - +/* Fonction qui initialise le générateur de nombre aléatoire */ + static u32 seed = 0x12341234; + void randomize() +{ + seed = gettimer(); + } + /******************************************************************************/ -/* Fonction qui renvoie un nombre aléatoire */ - -u32 rand() -{ - u32 next = seed; - int result; - - next *= 1103515245; - next += 12345; - result = (unsigned int) (next / 65536) % 2048; - - next *= 1103515245; - next += 12345; - result <<= 10; - result ^= (unsigned int) (next / 65536) % 1024; - - next *= 1103515245; - next += 12345; - result <<= 10; - result ^= (unsigned int) (next / 65536) % 1024; - - seed = next; - - return result; -} - +/* Fonction qui renvoie un nombre aléatoire */ + u32 rand() +{ + u32 next = seed; + int result; + next *= 1103515245; + next += 12345; + result = (unsigned int)(next / 65536) % 2048; + next *= 1103515245; + next += 12345; + result <<= 10; + result ^= (unsigned int)(next / 65536) % 1024; + next *= 1103515245; + next += 12345; + result <<= 10; + result ^= (unsigned int)(next / 65536) % 1024; + seed = next; + return result; + } + + /******************************************************************************/ -/* Fonction qui renvoie un nombre aléatoire borné */ +/* Fonction qui renvoie un nombre aléatoire borné */ + u32 random(u32 lower, u32 upper) +{ + return (rand() % (upper - lower + 1)) + lower; + } + -u32 random(u32 lower, u32 upper) { - return (rand() % (upper - lower + 1)) + lower; -} diff --git a/lib/memory.c b/lib/memory.c index c032927..0f7dcc8 100755 --- a/lib/memory.c +++ b/lib/memory.c @@ -3,44 +3,45 @@ /*******************************************************************************/ /* Copie un octet une ou plusieurs fois en mémoire */ - -void memset(void *dst, u8 val, u32 count, u32 size) -{ - u8 * temp; - for (temp = (u8 *) dst; count != 0; count--) { - temp += size; - *temp = val; - } -} - + void memset(void *dst, u8 val, u32 count, u32 size) +{ + u8 * temp; + for (temp = (u8 *) dst; count != 0; count--) { + temp += size; + *temp = val; + } + } + + /*******************************************************************************/ /* Copie une portion de mémoire vers une autre */ - -void memcpy(void *src, void *dst, u32 count, u32 size) { - char *s, *d; - u32 i; - s = (u8 *) src; - d = (u8 *) dst; - for (i = 0; i < count; i++) { - *(d + i * size) = *(s + i); - } -} - + void memcpy(void *src, void *dst, u32 count, u32 size) +{ + char *s, *d; + u32 i; + s = (u8 *) src; + d = (u8 *) dst; + for (i = 0; i < count; i++) { + *(d + i * size) = *(s + i); + } + } + + /*******************************************************************************/ /* Compare 2 portions de mémoire */ - -u32 memcmp(void *src, void *dst, u32 count, u32 size) -{ - const u8 *mem1 = (const u8 *)src; - const u8 *mem2 = (const u8 *)dst; - for (; count != 0; count--) { - if (*mem1 != *mem2) - return *mem1 - *mem2; - mem1 += size; - mem2 += size; - } -} - + u32 memcmp(void *src, void *dst, u32 count, u32 size) +{ + const u8 *mem1 = (const u8 *)src; + const u8 *mem2 = (const u8 *)dst; + for (; count != 0; count--) { + if (*mem1 != *mem2) + return *mem1 - *mem2; + mem1 += size; + mem2 += size; + } + } + + /*******************************************************************************/ diff --git a/lib/shell.c b/lib/shell.c index e19d59a..c9995e1 100644 --- a/lib/shell.c +++ b/lib/shell.c @@ -9,41 +9,45 @@ #include "shell.h" static command commands[] = { -{"REBOOT","",&rebootnow}, -{"CLEAR","",&clear}, -{"MODE","",&mode}, -{"DETECTCPU","",&detectcpu}, -{"TEST2D","",&test2d}, -{"REGS","",&dump_regs}, -{"GDT","",&readgdt}, -{"IDT","",&readidt}, + {"REBOOT", "", &rebootnow}, + {"CLEAR", "", &clear}, + {"MODE", "", &mode}, + {"DETECTCPU", "", &detectcpu}, + {"TEST2D", "", &test2d}, + {"REGS", "", &dump_regs}, + {"GDT", "", &readgdt}, + {"IDT", "", &readidt}, }; /*******************************************************************************/ /* Shell, traite les commandes */ -void shell() { - static u8 field[]=" \000"; - static u8 item[]=" \000"; - int i; - bool found; - while (true) { - print("\r\n# "); - getstring(&field); - print("\r\n"); - if (strgetnbitems(&field,' ')<1) continue; - strgetitem(&field, &item, ' ', 0); - strtoupper(&item); - found=false; - for(i=0;i"); - waitascii(); - reboot(); - return 0; +int rebootnow() +{ + print(""); + waitascii(); + reboot(); + return 0; } /*******************************************************************************/ /* Test les fonctionnalité 2D graphiques */ -int test2d() { - setvmode(0x89); - fill(0x00); - struct vertex2d a,b,c; - randomize(); - for(int i=0;i<3200;i++) - { - a.x=random(0, 800); - a.y=random(0, 600); - b.x=random(0, 800); - b.y=random(0, 600); - c.x=random(0, 800); - c.y=random(0, 600); - trianglefilled(&a,&b,&c,random(0, 16)); - triangle(&a,&b,&c,2); - } - return 0; +int test2d() +{ + setvmode(0x89); + fill(0x00); + struct vertex2d a, b, c; + randomize(); + for (int i = 0; i < 3200; i++) { + a.x = random(0, 800); + a.y = random(0, 600); + b.x = random(0, 800); + b.y = random(0, 600); + c.x = random(0, 800); + c.y = random(0, 600); + trianglefilled(&a, &b, &c, random(0, 16)); + triangle(&a, &b, &c, 2); + } + return 0; } + /*******************************************************************************/ /* Lit l'IDT et l'affiche */ int readidt() { - u32 index,i=0; - idtdes* desc; - struct idtr idtreg; - sidt(&idtreg); - printf("Information sur l'IDT\r\nAdresse:%X Limite:%hX",idtreg.base,(u32)idtreg.limite); - desc=idtreg.base; - for(index=0;index\r\n"); - waitascii(); - } - } - return 0; + u32 index, i = 0; + idtdes *desc; + struct idtr idtreg; + sidt(&idtreg); + printf("Information sur l'IDT\r\nAdresse:%X Limite:%hX", idtreg.base, + (u32) idtreg.limite); + desc = idtreg.base; + for (index = 0; index < idtreg.limite / sizeof(idtdes); index++) { + u32 select = desc[index].select; + u32 offset = + desc[index].offset0_15 + (desc[index].offset16_31 << 16); + u32 type = desc[index].type; + printf("\r\nInterruption % d Selecteur %hX: offset:%X type:", + i++, select, offset, type); + if (type == INTGATE) + print("INTGATE"); + else if (type == TRAPGATE) + print("TRAPGATE"); + else if (type == TASKGATE) + print("TASKGATE"); + else if (type == CALLGATE) + print("CALLGATE"); + else if (type == LDTDES) + print("LDTDES"); + else + print("inconnu"); + if (i % 32 == 0) { + print("\r\n\r\n"); + waitascii(); + } + } + return 0; } + /*******************************************************************************/ /* Lit les descripteurs GDT et les affiche */ int readgdt() { - u32 index; - gdtdes* desc; - struct gdtr gdtreg; - sgdt(&gdtreg); - printf("Information sur la LGDT\r\nAdresse:%X Limite:%hX",gdtreg.base,(u32)gdtreg.limite); - desc=gdtreg.base; - for(index=0;index> 7 == 1) { - u32 flags=desc[index].flags; - u32 limit=desc[index].lim0_15+(desc[index].lim16_19 << 16); - u32 base=desc[index].base0_15+(desc[index].base16_23 << 16)+(desc[index].base24_31 << 24) ; - printf("\r\nSelecteur %hX: base:%X limit:%X access:%hX flags:%hX\r\n -> ",index*sizeof(gdtdes),base,limit,acces,flags); - if ((acces >> 4) & 1 == 1) - print("Systeme "); - else { - if (acces & 1 == 1) - print("Acces "); - } - if ((acces >> 3) & 1 == 1) { - print("Code."); - if ((acces >> 1) & 1 == 1) - print("Readable "); - if ((acces >> 2) & 1 == 1) - print("Conforming "); - else - print("Normal "); - } - else { - print("Data."); - if ((acces >> 3) & 1 == 1) - print("Down "); - else - print("up "); - if ((acces >> 1) & 1 == 1) - print("writeable "); - } - if (flags & 1 == 1) - print("Dispo "); - if ((flags >> 2) & 1 == 1) - print("32 bits "); - else - print("16 bits "); - if ((flags >> 3) & 1 == 1) - print("4k "); - else - print("1b "); - u8 dpl=(acces>>5) & 0b11; - printf("DPL:%d",dpl); - } - } - return 0; + u32 index; + gdtdes *desc; + struct gdtr gdtreg; + sgdt(&gdtreg); + printf("Information sur la LGDT\r\nAdresse:%X Limite:%hX", gdtreg.base, + (u32) gdtreg.limite); + desc = gdtreg.base; + for (index = 0; index < gdtreg.limite / sizeof(gdtdes); index++) { + u32 acces = desc[index].acces; + if (acces >> 7 == 1) { + u32 flags = desc[index].flags; + u32 limit = + desc[index].lim0_15 + (desc[index].lim16_19 << 16); + u32 base = + desc[index].base0_15 + + (desc[index].base16_23 << 16) + + (desc[index].base24_31 << 24); + printf + ("\r\nSelecteur %hX: base:%X limit:%X access:%hX flags:%hX\r\n -> ", + index * sizeof(gdtdes), base, limit, acces, flags); + if ((acces >> 4) & 1 == 1) + print("Systeme "); + else { + if (acces & 1 == 1) + print("Acces "); + } + if ((acces >> 3) & 1 == 1) { + print("Code."); + if ((acces >> 1) & 1 == 1) + print("Readable "); + if ((acces >> 2) & 1 == 1) + print("Conforming "); + else + print("Normal "); + } else { + print("Data."); + if ((acces >> 3) & 1 == 1) + print("Down "); + else + print("up "); + if ((acces >> 1) & 1 == 1) + print("writeable "); + } + if (flags & 1 == 1) + print("Dispo "); + if ((flags >> 2) & 1 == 1) + print("32 bits "); + else + print("16 bits "); + if ((flags >> 3) & 1 == 1) + print("4k "); + else + print("1b "); + u8 dpl = (acces >> 5) & 0 b11; + printf("DPL:%d", dpl); + } + } + return 0; } /*******************************************************************************/ @@ -206,10 +229,13 @@ int readgdt() int detectcpu() { - cpuinfo cpu; - u8 noproc[] = "\033[31mInconnu\033[0m\000"; - strcpy(&noproc, &cpu.detectedname); + cpuinfo cpu; + u8 noproc[] = "\033[31mInconnu\033[0m\000"; + strcpy(&noproc, &cpu.detectedname); getcpuinfos(&cpu); - printf("\r\nDetection du processeur\r\033[1m Revision \t:%d\r Modele \t:%d\r Famille \t:%d\r Nom cpuid\t:%s\rJeux d'instruction\t:%s\033[0m\r\n\000",cpu.stepping, cpu.models, cpu.family, &cpu.detectedname,&cpu.techs); - return 0; + printf + ("\r\nDetection du processeur\r\033[1m Revision \t:%d\r Modele \t:%d\r Famille \t:%d\r Nom cpuid\t:%s\rJeux d'instruction\t:%s\033[0m\r\n\000", + cpu.stepping, cpu.models, cpu.family, &cpu.detectedname, + &cpu.techs); + return 0; } diff --git a/lib/string.c b/lib/string.c index a635a48..c845f76 100755 --- a/lib/string.c +++ b/lib/string.c @@ -33,9 +33,9 @@ u8 *strchr(const u8 * src, u8 achar) u32 strchrpos(const u8 * src, u8 achar) { - u32 i; - for (i=0; *(src+i) != achar; ++i) - if (*(src+i) == 0) + u32 i; + for (i = 0; *(src + i) != achar; ++i) + if (*(src + i) == 0) return 0; return i; } @@ -98,10 +98,10 @@ u8 *strcat(const u8 * src, u8 * dest) void strtolower(u8 * src) { while (*src != 0) { - if ((*src >= 'A') && (*src <= 'Z')) - *src=*src+'a'-'A'; + if ((*src >= 'A') && (*src <= 'Z')) + *src = *src + 'a' - 'A'; src++; - } + } } /******************************************************************************/ @@ -111,10 +111,10 @@ void strtolower(u8 * src) void strtoupper(u8 * src) { while (*src != 0) { - if ((*src >= 'a') && (*src <= 'z')) - *src=*src-('a'-'A'); + if ((*src >= 'a') && (*src <= 'z')) + *src = *src - ('a' - 'A'); src++; - } + } } /******************************************************************************/ @@ -124,12 +124,12 @@ void strtoupper(u8 * src) void strinvertcase(u8 * src) { while (*src != 0) { - if ((*src >= 'A') && (*src <= 'Z')) - *src=*src+'a'-'A'; - else if ((*src >= 'a') && (*src <= 'z')) - *src=*src-('a'-'A'); + if ((*src >= 'A') && (*src <= 'Z')) + *src = *src + 'a' - 'A'; + else if ((*src >= 'a') && (*src <= 'z')) + *src = *src - ('a' - 'A'); src++; - } + } } /******************************************************************************/ @@ -138,13 +138,13 @@ void strinvertcase(u8 * src) void stronecase(u8 * src) { - if ((*src >= 'a') && (*src <= 'z')) - *src=*src-('a'-'A'); - while (*src != 0) { + if ((*src >= 'a') && (*src <= 'z')) + *src = *src - ('a' - 'A'); + while (*src != 0) { src++; - if ((*src >= 'A') && (*src <= 'Z')) - *src=*src+'a'-'A'; - } + if ((*src >= 'A') && (*src <= 'Z')) + *src = *src + 'a' - 'A'; + } } /******************************************************************************/ @@ -153,249 +153,261 @@ void stronecase(u8 * src) void strsetlen(u8 * src, u32 size) { - *(src+size)='\000'; + *(src + size) = '\000'; } /******************************************************************************/ /* Inverse la chaine */ -void strinvert(u8 *src) +void strinvert(u8 * src) { - u8 *dst=src+strlen(src)-1; - while (src < dst) { - u8 char1=*dst; - u8 char2=*src; - *dst=char2; - *src=char1; + u8 *dst = src + strlen(src) - 1; + while (src < dst) { + u8 char1 = *dst; + u8 char2 = *src; + *dst = char2; + *src = char1; src++; - dst--; - } + dst--; + } } /******************************************************************************/ /* Remplace tout les caractères rechercher par un autre */ -void strreplace(u8 *src, u8 search, u8 replaced) +void strreplace(u8 * src, u8 search, u8 replaced) { - u8 *pos=strchr(src, search); - while (pos!=0) - { - *pos=replaced; - pos=strchr(src, search); - } + u8 *pos = strchr(src, search); + while (pos != 0) { + *pos = replaced; + pos = strchr(src, search); + } } /******************************************************************************/ /* Rempli de caractère */ -u8 *strfill(u8 *dst, u8 pattern, u32 size) +u8 *strfill(u8 * dst, u8 pattern, u32 size) { - u32 i; - for (i=0; i <= size; i++) - *(dst+i)=pattern; - *(dst+i+1)='\000'; - return dst; + u32 i; + for (i = 0; i <= size; i++) + *(dst + i) = pattern; + *(dst + i + 1) = '\000'; + return dst; } /******************************************************************************/ /* Renvoie la partie gauche d'une chaine */ -void strleft(u8 *src, u8 *dest, u32 size) { - u32 i; - for (i = 0; (*(src + i) != 0) && (i1) - strdelete(pos,1,i-1); - pos=strchr(pos+1, delim); - } +void strcompressdelimiter(u8 * src, u8 delim) +{ + u8 *pos = strchr(src, delim); + while (pos != 0) { + u8 i; + for (i = 0; (*(pos + i) != 0) && (*(pos + i) == delim); i++) ; + if (i > 1) + strdelete(pos, 1, i - 1); + pos = strchr(pos + 1, delim); + } } /******************************************************************************/ /* Récupérère l'élément N d'une liste utilisant un délimiteur */ -u8* strgetitem(u8 *src, u8 *dest, u8 delim, u32 index) { - u32 i; - u8* pos=strgetpointeritem(src,delim,index); - for (i = 0; (*(pos+i) != 0) && (*(pos+i) != delim); i++) - *(dest+i)=*(pos+i); - *(dest+i)='\000'; - return dest; +u8 *strgetitem(u8 * src, u8 * dest, u8 delim, u32 index) +{ + u32 i; + u8 *pos = strgetpointeritem(src, delim, index); + for (i = 0; (*(pos + i) != 0) && (*(pos + i) != delim); i++) + *(dest + i) = *(pos + i); + *(dest + i) = '\000'; + return dest; } /******************************************************************************/ /* Récupérère un pointeur sur l'élément N d'une liste utilisant un délimiteur */ -u8* strgetpointeritem(u8 *src, u8 delim, u32 index) { - u32 i; - u8* pos=src; - for (i = 0; imax) - max=result; - } - if (max>10) - return 16; - else if (max>8) - return 10; - else if (max>2) - return 8; - else - return 2; +u8 strgetminbase(u8 * src) +{ + u8 temp[] = " \000"; + u8 *dst = &temp; + strtoupper(strcpy(src, &temp)); + u8 max = 0; + while (*dst != 0) { + u32 result = strchrpos(&base, *dst++); + if (result == 0) + return 0; + if (result > max) + max = result; + } + if (max > 10) + return 16; + else if (max > 8) + return 10; + else if (max > 2) + return 8; + else + return 2; } /******************************************************************************/ /* Renvoie la base du nombre */ -u8 hexa[]="0x\000"; -u8 bases[]=" bodh\000"; -u8 basesnum[]={0,2,8,10,16}; -u8 declaredbase=10; -u8 minbase=0; -u8 strgetbase(u8 *src) { - u8 temp[]=" \000"; - strleft(src,&temp,2); - if (strcmp(&temp,&hexa)==0) { - declaredbase=16; - u8 size=strlen(src); - strright(src,&temp,size-2); - minbase=strgetminbase(&temp); - } - else { - strright(src,&temp,1); - declaredbase=basesnum[strchrpos(&bases,temp[0])]; - if (declaredbase>0) { - u8 size=strlen(src); - strleft(src,&temp,size-1); - minbase=strgetminbase(&temp); - } - else - { - minbase=strgetminbase(src); - declaredbase=minbase; - } - } - if (declaredbase>=minbase && minbase!=0) - return declaredbase; - else - return 0; +u8 hexa[] = "0x\000"; +u8 bases[] = " bodh\000"; +u8 basesnum[] = { 0, 2, 8, 10, 16 }; + +u8 declaredbase = 10; +u8 minbase = 0; +u8 strgetbase(u8 * src) +{ + u8 temp[] = " \000"; + strleft(src, &temp, 2); + if (strcmp(&temp, &hexa) == 0) { + declaredbase = 16; + u8 size = strlen(src); + strright(src, &temp, size - 2); + minbase = strgetminbase(&temp); + } else { + strright(src, &temp, 1); + declaredbase = basesnum[strchrpos(&bases, temp[0])]; + if (declaredbase > 0) { + u8 size = strlen(src); + strleft(src, &temp, size - 1); + minbase = strgetminbase(&temp); + } else { + minbase = strgetminbase(src); + declaredbase = minbase; + } + } + if (declaredbase >= minbase && minbase != 0) + return declaredbase; + else + return 0; } /******************************************************************************/ /* Transforme une chaine en nombre */ -u32 strtoint(u8 *src) { - u8* temp=src; - u32 result=0; - u8 thebase=strgetbase(src); - u32 multi=1; - u8 shorter=0; +u32 strtoint(u8 * src) +{ + u8 *temp = src; + u32 result = 0; + u8 thebase = strgetbase(src); + u32 multi = 1; + u8 shorter = 0; - if (thebase==0) return 0; - if (*(src+1)=='x') shorter=2; - while (*++temp!=0); - while (*temp==0 || *temp=='b' || *temp=='o' || *temp=='d' || *temp=='h') - temp--; - while (src+shorter<=temp) { - u8 achar=*temp--; - if ((achar >= 'a') && (achar <= 'z')) - achar=achar-('a'-'A'); - result=result+multi*(strchrpos(&base,achar)-1); - multi=multi*thebase; - } - return result; + if (thebase == 0) + return 0; + if (*(src + 1) == 'x') + shorter = 2; + while (*++temp != 0) ; + while (*temp == 0 || *temp == 'b' || *temp == 'o' || *temp == 'd' + || *temp == 'h') + temp--; + while (src + shorter <= temp) { + u8 achar = *temp--; + if ((achar >= 'a') && (achar <= 'z')) + achar = achar - ('a' - 'A'); + result = result + multi * (strchrpos(&base, achar) - 1); + multi = multi * thebase; + } + return result; } diff --git a/lib/syscall.c b/lib/syscall.c index 66b17a3..0989132 100644 --- a/lib/syscall.c +++ b/lib/syscall.c @@ -1,19 +1,18 @@ #include -#include -#include +#include +#include /* 32bit SYSENTER instruction entry. - * - * Arguments: - * %eax System call number. - * %ebx Arg1 - * %ecx Arg2 - * %edx Arg3 - * %esi Arg4 - * %edi Arg5 - * %ebp user stack - * 0(%ebp) Arg6*/ - + * + * Arguments: + * %eax System call number. + * %ebx Arg1 + * %ecx Arg2 + * %edx Arg3 + * %esi Arg4 + * %edi Arg5 + * %ebp user stack + * 0(%ebp) Arg6*/ /*******************************************************************************/ @@ -30,8 +29,7 @@ void sysenter_handler(void) void initsyscall(void) { - wrmsr(0x174, SEL_KERNEL_CODE, 0x0); - wrmsr(0x175, STACK_OFFSET, 0x0); - wrmsr(0x176, &sysenter_handler, 0x0); + wrmsr(0x174, SEL_KERNEL_CODE, 0x0); + wrmsr(0x175, STACK_OFFSET, 0x0); + wrmsr(0x176, &sysenter_handler, 0x0); } - diff --git a/lib/timer.c b/lib/timer.c index 7d274ff..53cd22d 100755 --- a/lib/timer.c +++ b/lib/timer.c @@ -15,8 +15,9 @@ static u32 time = 0; /* Récupère la valeur du timer */ -u32 gettimer() { - return time; +u32 gettimer() +{ + return time; } /******************************************************************************/ @@ -30,7 +31,7 @@ void timer() pushad(); showchar(0, 0, curs[curspos], 7); curspos = (curspos + 1) & 0x3; - time++; + time++; irqendmaster(); popad(); popf(); diff --git a/lib/vga.c b/lib/vga.c index a5db806..32ea994 100755 --- a/lib/vga.c +++ b/lib/vga.c @@ -477,22 +477,19 @@ void writepxl_8bitsunchain(u16 x, u16 y, u32 c) u8 nextvmode() { - u8 mode=getvmode(); - mode++; - if (mode>=0x80) { - if (mode>maxgraphmode) - mode=0x0; - } - else { - if (mode>maxtextmode) - mode=0x80; - } - setvmode(mode); - return mode; + u8 mode = getvmode(); + mode++; + if (mode >= 0x80) { + if (mode > maxgraphmode) + mode = 0x0; + } else { + if (mode > maxtextmode) + mode = 0x80; + } + setvmode(mode); + return mode; } - - /*******************************************************************************/ /* Change le mode video courant */ diff --git a/lib/video.c b/lib/video.c index 1bb82c5..806f939 100755 --- a/lib/video.c +++ b/lib/video.c @@ -291,137 +291,133 @@ void putchar(u8 thechar) u32 print(u8 * string) { u8 *source; - u32 i=0; + u32 i = 0; source = string; while (*source != 0) { putchar(*source++); - i++; + i++; } - return i; + return i; } /*******************************************************************************/ -# define buffersize 1024 +#define buffersize 1024 /* affiche une chaine de caractère formaté a l'ecran */ -u32 printf(const u8 *string, ...) +u32 printf(const u8 * string, ...) { va_list args; - u32 sizes[]={0xFF,0xFFFF,0xFFFFFFFF}; - u8 strbase2[] = "b\000"; - u8 strbase8[] = "o\000"; - u8 strbase16[] = "h\000"; - u8 hexadecimal[]="*0x\000"; - u8 achar,temp; - u8 asize,charadd; - u8 buffer[buffersize]; + u32 sizes[] = { 0xFF, 0xFFFF, 0xFFFFFFFF }; + u8 strbase2[] = "b\000"; + u8 strbase8[] = "o\000"; + u8 strbase16[] = "h\000"; + u8 hexadecimal[] = "*0x\000"; + u8 achar, temp; + u8 asize, charadd; + u8 buffer[buffersize]; u8 *str = string; - u8 *strtemp; + u8 *strtemp; u32 i = 0, counter = 0; u32 num; - bool flag=false; + bool flag = false; va_start(args, string); - for (achar = *str; achar != '\000'; i++, achar = *(str + i)) - { - if (achar != '%' && !flag) - { + for (achar = *str; achar != '\000'; i++, achar = *(str + i)) { + if (achar != '%' && !flag) { putchar(achar); counter++; - asize=2; - charadd=0xFF; - } - else if (achar == '%' || flag) - { - if (!flag) ++i; + asize = 2; + charadd = 0xFF; + } else if (achar == '%' || flag) { + if (!flag) + ++i; achar = *(str + i); - switch(achar) - { - case '0': - charadd='0'; - flag=true; - break; - case ' ': - charadd=' '; - flag=true; - break; - case 'h': - asize--; - flag=true; - break; - case 'l': - asize++; - flag=true; - break; - case 'u': - num = (u32)va_arg(args, int); - if (charadd==0xFF) - charadd='0'; + switch (achar) { + case '0': + charadd = '0'; + flag = true; + break; + case ' ': + charadd = ' '; + flag = true; + break; + case 'h': + asize--; + flag = true; + break; + case 'l': + asize++; + flag = true; + break; + case 'u': + num = (u32) va_arg(args, int); + if (charadd == 0xFF) + charadd = '0'; itoa(num, &buffer, 10, sizes[asize], charadd); counter += print(&buffer); - flag=false; - break; - case 'o': - num = (u32)va_arg(args, int); - if (charadd==0xFF) - charadd='0'; + flag = false; + break; + case 'o': + num = (u32) va_arg(args, int); + if (charadd == 0xFF) + charadd = '0'; itoa(num, &buffer, 8, sizes[asize], charadd); - counter += print(&buffer)+1; - print(&strbase8); - flag=false; + counter += print(&buffer) + 1; + print(&strbase8); + flag = false; break; case 'c': - temp = (u8)va_arg(args, int); + temp = (u8) va_arg(args, int); putchar(temp); counter++; - flag=false; + flag = false; break; case 'd': - case 'i': + case 'i': num = (int)va_arg(args, int); - if (charadd==0xFF) - charadd=' '; + if (charadd == 0xFF) + charadd = ' '; sitoa(num, &buffer, sizes[asize]); counter += print(&buffer); - flag=false; + flag = false; break; case 's': - strtemp = (u8 *)va_arg(args, u8 *); + strtemp = (u8 *) va_arg(args, u8 *); counter += print(strtemp); - flag=false; + flag = false; break; case 'p': - num = (u32)va_arg(args, int); - if (charadd==0xFF) - charadd='0'; + num = (u32) va_arg(args, int); + if (charadd == 0xFF) + charadd = '0'; print(&hexadecimal); - itoa(num, buffer, 16, sizes[asize], '0'); - counter += print(&buffer)+2; - flag=false; + itoa(num, buffer, 16, sizes[asize], '0'); + counter += print(&buffer) + 2; + flag = false; break; case 'x': case 'X': - num = (u32)va_arg(args, int); - if (charadd==0xFF) - charadd='0'; + num = (u32) va_arg(args, int); + if (charadd == 0xFF) + charadd = '0'; itoa(num, &buffer, 16, sizes[asize], charadd); - if (achar=='X') - strtoupper(&buffer); - counter += print(&buffer)+1; - print(&strbase16); - flag=false; + if (achar == 'X') + strtoupper(&buffer); + counter += print(&buffer) + 1; + print(&strbase16); + flag = false; break; case 'b': - num = (u32)va_arg(args, int); - if (charadd==0xFF) - charadd='0'; + num = (u32) va_arg(args, int); + if (charadd == 0xFF) + charadd = '0'; itoa(num, &buffer, 2, sizes[asize], charadd); - counter += print(&buffer)+1; - print(&strbase2); - flag=false; - break; + counter += print(&buffer) + 1; + print(&strbase2); + flag = false; + break; default: break; } @@ -435,75 +431,71 @@ u32 printf(const u8 *string, ...) /* converti un entier non signé en chaine de caractère */ -u8* itoa(u32 orignum, u8* str, u8 base, u32 dim, u8 achar) +u8 *itoa(u32 orignum, u8 * str, u8 base, u32 dim, u8 achar) { - u32 sizes[]={0xFF,0xFFFF,0xFFFFFFFF}; - u8 *pointer = str, i, size=0; - u32 num=orignum; - num&=dim; - if (num == 0 && (achar==0)) - { - *(pointer++) = '0'; - *pointer = '\000'; - return str; - } - switch (base) - { - case 2: - size=log2(dim); - break; - case 8: - size=log2(dim)/2; - break; - case 10: - size=log10(dim); - break; - case 16: - size=log2(dim)/4; - break; - } - for(i=0;i 9)? (result-10) + 'a' : result + '0'; - num = num / (u32)base; - if ((num==0) && (achar==0)) - break; - } - *pointer = '\000'; - strinvert(str); - return str; + u32 sizes[] = { 0xFF, 0xFFFF, 0xFFFFFFFF }; + u8 *pointer = str, i, size = 0; + u32 num = orignum; + num &= dim; + if (num == 0 && (achar == 0)) { + *(pointer++) = '0'; + *pointer = '\000'; + return str; + } + switch (base) { + case 2: + size = log2(dim); + break; + case 8: + size = log2(dim) / 2; + break; + case 10: + size = log10(dim); + break; + case 16: + size = log2(dim) / 4; + break; + } + for (i = 0; i < size; i++) { + u32 result = num % (u32) base; + *(pointer++) = + (result > 9) ? (result - 10) + 'a' : result + '0'; + num = num / (u32) base; + if ((num == 0) && (achar == 0)) + break; + } + *pointer = '\000'; + strinvert(str); + return str; } /*******************************************************************************/ /* converti un entier en chaine de caractère */ -u8* sitoa(int num, u8* str, u32 dim) +u8 *sitoa(int num, u8 * str, u32 dim) { - u8 *pointer = str; - bool isNegative = false; - num&=dim; - if (num == 0) - { - *pointer++ = '0'; - *pointer = '\000'; - return str; - } - if (num < 0) - { - isNegative = true; - num = -num; - } - while (num != 0) - { - u32 result = num % 10; - *(pointer++) = (result > 9)? (result-10) + 'a' : result + '0'; - num = num/ 10; - } - if (isNegative) - *(pointer++) = '-'; - *pointer = '\000'; - strinvert(str); - return str; + u8 *pointer = str; + bool isNegative = false; + num &= dim; + if (num == 0) { + *pointer++ = '0'; + *pointer = '\000'; + return str; + } + if (num < 0) { + isNegative = true; + num = -num; + } + while (num != 0) { + u32 result = num % 10; + *(pointer++) = + (result > 9) ? (result - 10) + 'a' : result + '0'; + num = num / 10; + } + if (isNegative) + *(pointer++) = '-'; + *pointer = '\000'; + strinvert(str); + return str; } diff --git a/system/ansi.c b/system/ansi.c index 5dca50f..e90091c 100755 --- a/system/ansi.c +++ b/system/ansi.c @@ -1,318 +1,634 @@ u8 ansilogo[5056] = { - 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x6D, 0xDA, 0x1B, 0x5B, 0x30, 0x6D, 0xC4, 0xC4, 0x1B, - 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xC4, 0x1B, 0x5B, 0x30, 0x6D, 0xC4, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, - 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x1B, 0x5B, 0x33, 0x37, 0x6D, - 0x20, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x31, 0x6D, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x37, 0x6D, - 0x20, 0x1B, 0x5B, 0x33, 0x31, 0x6D, 0x4F, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x20, 0x1B, 0x5B, 0x33, - 0x33, 0x6D, 0x53, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0x32, - 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0x30, 0x1B, 0x5B, - 0x31, 0x3B, 0x33, 0x37, 0x6D, 0x20, 0x1B, 0x5B, 0x33, 0x34, 0x6D, 0x30, 0x1B, 0x5B, 0x33, 0x37, - 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x34, 0x6D, 0x30, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x37, - 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x76, 0x32, 0x2E, 0x31, 0x46, 0x72, 0x1B, 0x5B, 0x31, 0x6D, - 0x20, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, - 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, - 0xC4, 0xBF, 0x1B, 0x5B, 0x30, 0x6D, 0xB3, 0x1B, 0x5B, 0x37, 0x38, 0x43, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x36, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDF, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, - 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDB, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDF, 0x1B, - 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, - 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x37, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, - 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, - 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, - 0xDF, 0xDF, 0xDF, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x37, 0x6D, 0xDC, 0xDC, 0x1B, 0x5B, 0x34, 0x37, - 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, - 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0xDC, 0x1B, 0x5B, 0x30, 0x3B, - 0x33, 0x36, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x33, - 0x36, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x37, 0x6D, 0xDC, 0xDC, 0x1B, 0x5B, 0x34, - 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, - 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0xDC, 0x1B, 0x5B, 0x30, - 0x6D, 0x20, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, - 0xDF, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0xDF, 0x1B, - 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDB, 0xDB, 0xDB, 0xDB, - 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, - 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDB, 0xDB, - 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, - 0xFA, 0x20, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x37, 0x6D, - 0xDF, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x34, 0x30, - 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, - 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, - 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x20, - 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, - 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, - 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x36, 0x6D, 0xDE, 0x20, 0x20, 0x20, 0x20, 0xDF, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, - 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, - 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, - 0x37, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xFE, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x33, - 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, - 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, - 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0x20, - 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, - 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDD, 0x20, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, - 0x31, 0x3B, 0x33, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0xFE, 0x1B, 0x5B, 0x30, - 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, - 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, - 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDE, 0x1B, 0x5B, 0x30, 0x6D, - 0x1B, 0x5B, 0x31, 0x30, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, - 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, - 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, - 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, - 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x33, 0x37, 0x6D, - 0xDC, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, - 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x33, - 0x37, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, - 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, - 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, - 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, - 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, - 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, - 0x30, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x32, 0x43, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x36, 0x6D, 0xDE, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, - 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, - 0x36, 0x6D, 0xFE, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDE, - 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, - 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, - 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, - 0xDF, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, - 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, 0x20, 0x1B, 0x5B, - 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, - 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, - 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, - 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, - 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, - 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x31, - 0x3B, 0x33, 0x36, 0x6D, 0xFA, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, - 0x31, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, - 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, - 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, - 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x37, - 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, - 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, - 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, - 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x36, - 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xFE, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, - 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, - 0x33, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, - 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, - 0x30, 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, - 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, - 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, - 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDD, 0x20, 0x1B, 0x5B, 0x33, - 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, - 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x37, 0x6D, - 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, - 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, - 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, - 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, - 0x6D, 0x1B, 0x5B, 0x31, 0x38, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, - 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, - 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, - 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, - 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, - 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, - 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, - 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDD, - 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, - 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, - 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, - 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, - 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x37, 0x43, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x35, 0x43, 0x1B, 0x5B, - 0x31, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, - 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, - 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, - 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, - 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, - 0x6D, 0x1B, 0x5B, 0x31, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, - 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, - 0x37, 0x6D, 0xDC, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, - 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0xDC, 0x1B, 0x5B, - 0x34, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, - 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, - 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, - 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, - 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, - 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, - 0x1B, 0x5B, 0x31, 0x37, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, - 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDF, 0xDF, 0x1B, 0x5B, - 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, - 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0xDF, 0xDF, 0x1B, 0x5B, 0x30, - 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, - 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, - 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, - 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, - 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, - 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, - 0x31, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, - 0x1B, 0x5B, 0x37, 0x38, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, - 0x30, 0x6D, 0x1B, 0x5B, 0x37, 0x38, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, - 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, - 0xDC, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, - 0x5B, 0x30, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, - 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, - 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, - 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, - 0x6D, 0xDC, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, - 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0xDC, 0xDC, - 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x20, - 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, - 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x31, - 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x20, 0x1B, 0x5B, 0x30, - 0x6D, 0x1B, 0x5B, 0x31, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, - 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB1, - 0xDB, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, - 0x5B, 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xDB, 0xB1, 0x20, 0x20, 0x20, - 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, - 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xDB, 0xB1, 0x20, 0x20, 0x20, 0x1B, - 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, - 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xDB, 0xB1, 0x20, 0x20, 0x20, 0x1B, 0x5B, - 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x35, 0x43, 0x1B, - 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, - 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0x20, 0xB0, 0xB2, - 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0xDB, - 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, - 0x30, 0x6D, 0xB2, 0xB0, 0x20, 0xB0, 0xB0, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, - 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, - 0x6D, 0xB2, 0xB0, 0x20, 0xB0, 0xB0, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, - 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, - 0xB2, 0xB0, 0x20, 0xB0, 0xB0, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, - 0x6D, 0x1B, 0x5B, 0x31, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, - 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, - 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0x20, 0xB1, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB1, - 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, 0x34, - 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB1, 0x20, 0x20, 0xB0, 0xB0, 0x1B, 0x5B, - 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, - 0x33, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, - 0x34, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB1, 0x20, 0x20, 0xB0, 0xB0, 0x1B, - 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, - 0x5B, 0x33, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, - 0x6D, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB1, 0x20, - 0x20, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, 0x34, 0x30, - 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, - 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, - 0x5B, 0x32, 0x30, 0x43, 0xDC, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, - 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x34, 0x37, - 0x3B, 0x33, 0x37, 0x6D, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x30, - 0x6D, 0xB0, 0x20, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB1, 0xB2, - 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x34, - 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, - 0x30, 0x6D, 0xB0, 0x20, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB1, - 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x30, - 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, - 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB0, 0x20, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, - 0x33, 0x37, 0x6D, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, - 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, - 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0xDC, 0x1B, 0x5B, 0x31, - 0x3B, 0x34, 0x37, 0x6D, 0xB1, 0xB2, 0xB1, 0xB2, 0xDB, 0xB2, 0xB1, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, - 0xDF, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, - 0x33, 0x37, 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB0, 0xB1, - 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, - 0x33, 0x37, 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB0, 0xB1, - 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, - 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, - 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, - 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, - 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, - 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB1, - 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB1, 0x1B, 0x5B, 0x30, - 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0x1B, - 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0x1B, 0x5B, 0x30, - 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x30, - 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0x1B, 0x5B, 0x34, 0x30, 0x3B, - 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, - 0x6D, 0xB0, 0xB1, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, - 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, - 0xB1, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0xDB, - 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, - 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, - 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, - 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, - 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, - 0xDD, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, - 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB2, 0xB0, 0x20, - 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, - 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, - 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xB0, - 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x34, - 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, - 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, - 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xB0, - 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x34, - 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x34, - 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, - 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, - 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, - 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, - 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, - 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDB, - 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, - 0x5B, 0x33, 0x30, 0x6D, 0xDB, 0xB1, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x38, 0x43, 0x1B, 0x5B, - 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB1, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, - 0x5B, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB1, 0xB0, 0x1B, - 0x5B, 0x30, 0x6D, 0xDB, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, - 0xB1, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x34, - 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB1, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x20, 0x20, 0x1B, 0x5B, - 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB1, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, - 0x5B, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB1, 0xB0, 0x1B, - 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x31, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, - 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, - 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDB, - 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, - 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, - 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x3B, 0x33, - 0x30, 0x6D, 0xDF, 0xDF, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, - 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, - 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, - 0xDF, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, - 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, - 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDF, 0x20, 0x1B, - 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, - 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, - 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDF, 0x20, 0x1B, 0x5B, 0x30, 0x6D, - 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDC, 0xDB, 0xDB, 0x1B, 0x5B, - 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, - 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDB, 0xDB, 0xDB, 0xDC, - 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0xDC, 0x1B, 0x5B, - 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x3B, 0x33, - 0x36, 0x6D, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x20, 0x20, - 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x1B, - 0x5B, 0x31, 0x37, 0x43, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0xDC, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x33, - 0x37, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, - 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, - 0xDC, 0xDC, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0xDC, - 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x37, 0x38, 0x43, 0x1B, 0x5B, - 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, - 0x5B, 0x31, 0x6D, 0x46, 0x31, 0x2D, 0x46, 0x38, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0x20, 0x43, 0x6F, - 0x6E, 0x73, 0x6F, 0x6C, 0x65, 0x73, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x65, 0x6C, 0x6C, 0x65, - 0x73, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x46, 0x39, 0x20, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0x44, - 0x65, 0x62, 0x75, 0x67, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x46, 0x31, 0x30, 0x20, 0x1B, 0x5B, - 0x33, 0x30, 0x6D, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x71, 0x75, - 0x65, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x46, 0x31, 0x31, 0x20, 0x1B, 0x5B, 0x33, 0x30, 0x6D, - 0x41, 0x69, 0x64, 0x65, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x30, 0x43, 0x1B, 0x5B, 0x31, - 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x37, 0x38, 0x43, 0x1B, - 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x44, - 0x65, 0x76, 0x65, 0x6C, 0x6F, 0x70, 0x70, 0x65, 0x20, 0x70, 0x61, 0x72, 0x20, 0x1B, 0x5B, 0x35, - 0x3B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0x4D, 0x72, 0x4E, 0x6F, 0x70, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, - 0x5B, 0x35, 0x36, 0x43, 0xB3, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xC0, 0xC4, 0xC4, 0xC4, - 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, - 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, - 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, - 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, - 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x1B, 0x5B, 0x30, 0x6D, 0xC4, 0x1B, 0x5B, 0x31, 0x3B, - 0x33, 0x30, 0x6D, 0xC4, 0x1B, 0x5B, 0x30, 0x6D, 0xC4, 0xC4, 0x1B, 0x5B, 0x31, 0x6D, 0xD9, 0x00 + 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x6D, 0xDA, 0x1B, 0x5B, 0x30, + 0x6D, 0xC4, 0xC4, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xC4, 0x1B, 0x5B, 0x30, 0x6D, 0xC4, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x1B, + 0x5B, 0x33, 0x37, 0x6D, + 0x20, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x31, 0x6D, 0x43, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x37, 0x6D, + 0x20, 0x1B, 0x5B, 0x33, 0x31, 0x6D, 0x4F, 0x1B, 0x5B, 0x33, 0x37, 0x6D, + 0x20, 0x1B, 0x5B, 0x33, + 0x33, 0x6D, 0x53, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x20, 0x20, 0x1B, 0x5B, + 0x33, 0x36, 0x6D, 0x32, + 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, + 0x6D, 0x30, 0x1B, 0x5B, + 0x31, 0x3B, 0x33, 0x37, 0x6D, 0x20, 0x1B, 0x5B, 0x33, 0x34, 0x6D, 0x30, + 0x1B, 0x5B, 0x33, 0x37, + 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x34, 0x6D, 0x30, 0x1B, 0x5B, + 0x31, 0x3B, 0x33, 0x37, + 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x76, 0x32, 0x2E, 0x31, 0x46, 0x72, + 0x1B, 0x5B, 0x31, 0x6D, + 0x20, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xBF, 0x1B, 0x5B, 0x30, 0x6D, 0xB3, 0x1B, 0x5B, 0x37, 0x38, 0x43, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x36, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDF, 0x1B, 0x5B, 0x30, + 0x3B, 0x33, 0x36, 0x6D, + 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDB, 0x1B, 0x5B, 0x30, 0x3B, 0x33, + 0x36, 0x6D, 0xDF, 0x1B, + 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDF, + 0xDF, 0xDF, 0xDF, 0xDF, + 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x37, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, + 0x34, 0x37, 0x6D, 0xDF, + 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, + 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x30, + 0x3B, 0x33, 0x36, 0x6D, + 0xDF, 0xDF, 0xDF, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x37, 0x6D, 0xDC, 0xDC, + 0x1B, 0x5B, 0x34, 0x37, + 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0xDC, + 0x1B, 0x5B, 0x30, 0x3B, + 0x33, 0x36, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x20, 0x20, + 0x20, 0x1B, 0x5B, 0x33, + 0x36, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x37, 0x6D, 0xDC, + 0xDC, 0x1B, 0x5B, 0x34, + 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, + 0xDC, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, + 0x1B, 0x5B, 0x31, 0x6D, + 0xDF, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, + 0x6D, 0xDB, 0xDF, 0x1B, + 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, + 0xDB, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, + 0x30, 0x6D, 0xB3, 0xB3, + 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, + 0x36, 0x6D, 0xDB, 0xDB, + 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x35, 0x43, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x36, 0x6D, + 0xFA, 0x20, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0x1B, + 0x5B, 0x34, 0x37, 0x6D, + 0xDF, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0xDF, + 0x1B, 0x5B, 0x34, 0x30, + 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x37, + 0x6D, 0xDC, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, + 0x5B, 0x30, 0x6D, 0x20, + 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0x20, 0x20, 0x1B, 0x5B, + 0x33, 0x37, 0x6D, 0xDC, + 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, + 0x6D, 0xDF, 0x1B, 0x5B, + 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x36, 0x43, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x36, 0x6D, 0xDE, 0x20, 0x20, 0x20, 0x20, 0xDF, 0xDB, 0xDB, 0x1B, + 0x5B, 0x30, 0x6D, 0x20, + 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, + 0x5B, 0x30, 0x6D, 0x20, + 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDB, 0x1B, 0x5B, + 0x30, 0x6D, 0x1B, 0x5B, + 0x37, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xFE, 0x20, 0x20, + 0x20, 0x1B, 0x5B, 0x33, + 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, + 0x30, 0x6D, 0xDB, 0x20, + 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, 0x1B, 0x5B, + 0x33, 0x36, 0x6D, 0x20, + 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, + 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDD, 0x20, 0x20, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x1B, 0x5B, + 0x31, 0x3B, 0x33, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x36, 0x6D, + 0xFE, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, + 0xDB, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, + 0xB3, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDE, + 0x1B, 0x5B, 0x30, 0x6D, + 0x1B, 0x5B, 0x31, 0x30, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, + 0x30, 0x6D, 0xDC, 0x1B, + 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, + 0xDF, 0x1B, 0x5B, 0x34, + 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0x1B, + 0x5B, 0x33, 0x37, 0x6D, + 0xDC, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, + 0xDF, 0x1B, 0x5B, 0x33, + 0x37, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, + 0xDF, 0x1B, 0x5B, 0x34, + 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x6D, + 0xDB, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, + 0x6D, 0xDC, 0x1B, 0x5B, + 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, + 0xDE, 0x1B, 0x5B, 0x34, + 0x30, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x32, 0x43, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x36, 0x6D, 0xDE, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, + 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, + 0x36, 0x6D, 0xFE, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, + 0x5B, 0x31, 0x6D, 0xDE, + 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDD, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, + 0x5B, 0x36, 0x43, 0x1B, + 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x30, 0x6D, + 0xDF, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x37, 0x6D, + 0xDF, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, + 0x20, 0x20, 0x1B, 0x5B, + 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, + 0x1B, 0x5B, 0x31, 0x6D, + 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, + 0x5B, 0x33, 0x37, 0x6D, + 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x30, 0x6D, + 0xDC, 0x1B, 0x5B, 0x34, + 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, + 0x43, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x36, 0x6D, 0xFA, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, + 0x33, 0x43, 0x1B, 0x5B, + 0x31, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, + 0xDD, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, 0x20, + 0x1B, 0x5B, 0x33, 0x37, + 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x30, 0x6D, + 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0xDF, 0x1B, 0x5B, 0x34, 0x37, + 0x6D, 0xDC, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x3B, 0x33, 0x30, + 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, + 0x1B, 0x5B, 0x31, 0x36, + 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xFE, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x20, 0x20, + 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x31, + 0x33, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x37, 0x6D, + 0xDD, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, + 0x6D, 0xDB, 0x1B, 0x5B, + 0x30, 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, + 0x5B, 0x30, 0x6D, 0xDC, + 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x37, + 0x6D, 0xDF, 0x1B, 0x5B, + 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDD, + 0x20, 0x1B, 0x5B, 0x33, + 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0x1B, + 0x5B, 0x34, 0x37, 0x6D, + 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, + 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x33, 0x37, 0x6D, + 0xDF, 0x1B, 0x5B, 0x34, + 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, + 0xDC, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x31, 0x38, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, + 0x6D, 0xB3, 0xB3, 0x1B, + 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x6D, + 0xDB, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x3B, 0x33, 0x30, + 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x20, 0x20, 0x1B, 0x5B, + 0x33, 0x37, 0x6D, 0xDC, + 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0x1B, 0x5B, 0x31, + 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, + 0x6D, 0xDC, 0x1B, 0x5B, + 0x33, 0x37, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, + 0x34, 0x30, 0x6D, 0xDD, + 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, + 0x5B, 0x34, 0x30, 0x6D, + 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDC, 0x1B, + 0x5B, 0x33, 0x37, 0x6D, + 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, + 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x37, 0x43, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, + 0x35, 0x43, 0x1B, 0x5B, + 0x31, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, + 0x30, 0x6D, 0xDB, 0x20, + 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDB, 0x20, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDE, 0x1B, 0x5B, 0x34, 0x30, 0x6D, + 0xDD, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x31, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, + 0x6D, 0xB3, 0xB3, 0x1B, + 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x6D, + 0xDF, 0x1B, 0x5B, 0x34, + 0x37, 0x6D, 0xDC, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, + 0xDC, 0xDC, 0x1B, 0x5B, + 0x34, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, + 0x34, 0x37, 0x6D, 0xDF, + 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, + 0xDF, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xDC, 0x1B, + 0x5B, 0x30, 0x6D, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, + 0x1B, 0x5B, 0x30, 0x6D, + 0x1B, 0x5B, 0x31, 0x37, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, + 0xB3, 0xB3, 0x1B, 0x5B, + 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, + 0xDF, 0xDF, 0x1B, 0x5B, + 0x34, 0x37, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0xDF, + 0xDF, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, + 0x34, 0x37, 0x6D, 0xDC, + 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x3B, 0x33, + 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, + 0x30, 0x6D, 0x1B, 0x5B, + 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, 0x34, 0x37, + 0x6D, 0xDC, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x3B, 0x33, + 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, 0x5B, + 0x30, 0x6D, 0x1B, 0x5B, + 0x31, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, + 0x1B, 0x5B, 0x30, 0x6D, + 0x1B, 0x5B, 0x37, 0x38, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, + 0xB3, 0xB3, 0x1B, 0x5B, + 0x30, 0x6D, 0x1B, 0x5B, 0x37, 0x38, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, + 0x30, 0x6D, 0xB3, 0xB3, + 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x30, 0x6D, + 0xDC, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x3B, 0x33, + 0x30, 0x6D, 0xDC, 0x1B, + 0x5B, 0x30, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, + 0x5B, 0x30, 0x6D, 0xDC, + 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, + 0x20, 0x1B, 0x5B, 0x31, + 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, + 0x1B, 0x5B, 0x30, 0x6D, + 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, + 0xDC, 0x1B, 0x5B, 0x31, + 0x6D, 0xDC, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, + 0x31, 0x6D, 0xDC, 0x1B, + 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, + 0x6D, 0xDC, 0xDC, 0xDC, + 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, + 0x31, 0x6D, 0xDC, 0x20, + 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, + 0x1B, 0x5B, 0x30, 0x6D, + 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0xDC, + 0xDC, 0x1B, 0x5B, 0x31, + 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, + 0x20, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x31, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, + 0x6D, 0xB3, 0xB3, 0x1B, + 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB1, + 0xDB, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x20, 0x1B, + 0x5B, 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xDB, + 0xB1, 0x20, 0x20, 0x20, + 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, + 0x20, 0x20, 0x1B, 0x5B, + 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xDB, 0xB1, + 0x20, 0x20, 0x20, 0x1B, + 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, + 0x20, 0x1B, 0x5B, 0x31, + 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xDB, 0xB1, 0x20, + 0x20, 0x20, 0x1B, 0x5B, + 0x33, 0x37, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, + 0x31, 0x35, 0x43, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, + 0x1B, 0x5B, 0x31, 0x33, + 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, + 0xB0, 0x20, 0xB0, 0xB2, + 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, 0x34, + 0x30, 0x6D, 0xDB, 0xDB, + 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0xDB, + 0xDB, 0x1B, 0x5B, 0x33, + 0x30, 0x6D, 0xB2, 0xB0, 0x20, 0xB0, 0xB0, 0x1B, 0x5B, 0x33, 0x37, 0x6D, + 0xDB, 0xDB, 0xDB, 0x1B, + 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0xDB, 0xDB, + 0x1B, 0x5B, 0x33, 0x30, + 0x6D, 0xB2, 0xB0, 0x20, 0xB0, 0xB0, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, + 0xDB, 0xDB, 0x1B, 0x5B, + 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDB, 0xDB, 0xDB, 0x1B, + 0x5B, 0x33, 0x30, 0x6D, + 0xB2, 0xB0, 0x20, 0xB0, 0xB0, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0xDB, 0xDB, + 0xDB, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x31, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, + 0x6D, 0xB3, 0xB3, 0x1B, + 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB0, + 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0x20, 0xB1, 0x1B, 0x5B, 0x34, 0x37, 0x3B, + 0x33, 0x37, 0x6D, 0xB1, + 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, + 0xB2, 0x1B, 0x5B, 0x34, + 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB1, 0x20, 0x20, + 0xB0, 0xB0, 0x1B, 0x5B, + 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, + 0xDB, 0xDB, 0x1B, 0x5B, + 0x33, 0x30, 0x6D, 0x20, 0x20, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, + 0x6D, 0xB2, 0x1B, 0x5B, + 0x34, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB1, 0x20, + 0x20, 0xB0, 0xB0, 0x1B, + 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, 0x1B, 0x5B, 0x34, 0x30, + 0x6D, 0xDB, 0xDB, 0x1B, + 0x5B, 0x33, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, + 0x6D, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, + 0x30, 0x6D, 0xB1, 0x20, + 0x20, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB2, + 0x1B, 0x5B, 0x34, 0x30, + 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x31, + 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, + 0x5B, 0x30, 0x6D, 0x1B, + 0x5B, 0x32, 0x30, 0x43, 0xDC, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, + 0xB0, 0xB1, 0xB2, 0x1B, + 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0x20, + 0x1B, 0x5B, 0x34, 0x37, + 0x3B, 0x33, 0x37, 0x6D, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, + 0x1B, 0x5B, 0x33, 0x30, + 0x6D, 0xB0, 0x20, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, + 0x37, 0x6D, 0xB1, 0xB2, + 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0x20, + 0x20, 0x1B, 0x5B, 0x34, + 0x37, 0x3B, 0x33, 0x37, 0x6D, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, + 0xDB, 0x1B, 0x5B, 0x33, + 0x30, 0x6D, 0xB0, 0x20, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, + 0x33, 0x37, 0x6D, 0xB1, + 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, + 0x20, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB1, 0xB2, 0x1B, + 0x5B, 0x34, 0x30, 0x6D, + 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, 0xB0, 0x20, 0xB0, 0xB0, 0xB0, 0x1B, + 0x5B, 0x34, 0x37, 0x3B, + 0x33, 0x37, 0x6D, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, + 0x5B, 0x33, 0x30, 0x6D, + 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, + 0x31, 0x3B, 0x33, 0x30, + 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, + 0xDC, 0x1B, 0x5B, 0x31, + 0x3B, 0x34, 0x37, 0x6D, 0xB1, 0xB2, 0xB1, 0xB2, 0xDB, 0xB2, 0xB1, 0xB0, + 0x1B, 0x5B, 0x30, 0x6D, + 0xDF, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, + 0x5B, 0x34, 0x37, 0x3B, + 0x33, 0x37, 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, + 0x37, 0x6D, 0xB0, 0xB1, + 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0x1B, + 0x5B, 0x34, 0x37, 0x3B, + 0x33, 0x37, 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x3B, 0x33, + 0x37, 0x6D, 0xB0, 0xB1, + 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, + 0x30, 0x6D, 0x20, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x20, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, + 0x37, 0x3B, 0x33, 0x37, + 0x6D, 0xB0, 0xB1, 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, + 0xB0, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, + 0x6D, 0xB3, 0xB3, 0x1B, + 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x6D, 0xB1, + 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x33, 0x30, 0x6D, + 0xB1, 0x1B, 0x5B, 0x30, + 0x6D, 0x1B, 0x5B, 0x36, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, + 0xB0, 0xB0, 0xB0, 0x1B, + 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, + 0xB1, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, + 0xB0, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0x1B, + 0x5B, 0x34, 0x30, 0x3B, + 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, + 0x6D, 0xB0, 0xB1, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB0, + 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, + 0x34, 0x37, 0x6D, 0xB0, + 0xB1, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, + 0x30, 0x6D, 0x20, 0xDB, + 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0x1B, 0x5B, 0x30, + 0x6D, 0x20, 0x1B, 0x5B, + 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0xB1, 0x1B, 0x5B, 0x34, 0x30, 0x3B, + 0x33, 0x30, 0x6D, 0xB0, + 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x30, 0x6D, + 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x36, 0x6D, + 0xDD, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, + 0x3B, 0x34, 0x37, 0x6D, + 0xB2, 0x1B, 0x5B, 0x34, 0x30, 0x6D, 0xDB, 0xDB, 0x1B, 0x5B, 0x33, 0x30, + 0x6D, 0xB2, 0xB0, 0x20, + 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x6D, + 0xB0, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, + 0x30, 0x6D, 0x20, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, + 0x34, 0x37, 0x6D, 0xB0, + 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, + 0xB0, 0x1B, 0x5B, 0x34, + 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x6D, + 0xB0, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, + 0x30, 0x6D, 0x20, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, + 0x34, 0x37, 0x6D, 0xB0, + 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x6D, + 0xB0, 0x1B, 0x5B, 0x34, + 0x30, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB0, + 0xB0, 0xB0, 0xB0, 0x1B, 0x5B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x30, + 0x6D, 0xDB, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, 0x6D, 0xB0, 0x1B, 0x5B, 0x34, 0x30, 0x3B, 0x33, + 0x30, 0x6D, 0xB0, 0x1B, + 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x34, 0x43, 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB3, + 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x36, 0x6D, 0xDB, + 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x6D, + 0xDB, 0xDB, 0xDB, 0x1B, + 0x5B, 0x33, 0x30, 0x6D, 0xDB, 0xB1, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, + 0x38, 0x43, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB1, 0xB0, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0x1B, + 0x5B, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, + 0x6D, 0xB1, 0xB0, 0x1B, + 0x5B, 0x30, 0x6D, 0xDB, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, + 0x3B, 0x33, 0x30, 0x6D, + 0xB1, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x35, 0x43, 0x1B, + 0x5B, 0x31, 0x3B, 0x34, + 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB1, 0xB0, 0x1B, 0x5B, 0x30, 0x6D, 0xDB, + 0x20, 0x20, 0x1B, 0x5B, + 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, 0x6D, 0xB1, 0xB0, 0x1B, 0x5B, + 0x30, 0x6D, 0xDB, 0x1B, + 0x5B, 0x35, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x34, 0x37, 0x3B, 0x33, 0x30, + 0x6D, 0xB1, 0xB0, 0x1B, + 0x5B, 0x30, 0x6D, 0xDB, 0x1B, 0x5B, 0x31, 0x31, 0x43, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x36, 0x6D, + 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB3, + 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x36, 0x6D, 0xDB, + 0xDC, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, + 0x6D, 0xDF, 0x1B, 0x5B, + 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, + 0xDF, 0xDF, 0x1B, 0x5B, + 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, + 0x30, 0x6D, 0xDF, 0xDF, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, + 0x1B, 0x5B, 0x31, 0x6D, + 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, + 0x5B, 0x30, 0x6D, 0xDF, + 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, + 0x5B, 0x31, 0x6D, 0xDF, + 0xDF, 0x20, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, + 0x6D, 0xDF, 0x1B, 0x5B, + 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, + 0xDF, 0xDF, 0x1B, 0x5B, + 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, + 0xDF, 0xDF, 0x20, 0x1B, + 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, + 0x5B, 0x30, 0x6D, 0xDF, + 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0xDF, 0x1B, + 0x5B, 0x31, 0x6D, 0xDF, + 0x1B, 0x5B, 0x30, 0x6D, 0xDF, 0x1B, 0x5B, 0x31, 0x6D, 0xDF, 0xDF, 0x20, + 0x1B, 0x5B, 0x30, 0x6D, + 0x1B, 0x5B, 0x39, 0x43, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, 0xDC, + 0xDB, 0xDB, 0x1B, 0x5B, + 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, + 0xB3, 0xB3, 0x1B, 0x5B, + 0x30, 0x6D, 0x20, 0x20, 0x20, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x36, 0x6D, + 0xDB, 0xDB, 0xDB, 0xDC, + 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, + 0xDC, 0xDC, 0x1B, 0x5B, + 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDC, 0x1B, 0x5B, 0x31, 0x6D, 0xDC, 0x1B, + 0x5B, 0x30, 0x3B, 0x33, + 0x36, 0x6D, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, 0x33, + 0x37, 0x6D, 0x20, 0x20, + 0x20, 0x20, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0xDC, 0xDC, 0xDC, 0x1B, 0x5B, + 0x33, 0x37, 0x6D, 0x1B, + 0x5B, 0x31, 0x37, 0x43, 0x1B, 0x5B, 0x33, 0x36, 0x6D, 0xDC, 0xDC, 0xDC, + 0xDC, 0x1B, 0x5B, 0x33, + 0x37, 0x6D, 0x1B, 0x5B, 0x31, 0x33, 0x43, 0x1B, 0x5B, 0x33, 0x36, 0x6D, + 0xDC, 0xDC, 0xDC, 0x1B, + 0x5B, 0x31, 0x6D, 0xDC, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDC, + 0x1B, 0x5B, 0x31, 0x6D, + 0xDC, 0xDC, 0x1B, 0x5B, 0x30, 0x3B, 0x33, 0x36, 0x6D, 0xDC, 0x1B, 0x5B, + 0x31, 0x6D, 0xDC, 0xDC, + 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x1B, 0x5B, 0x30, 0x6D, 0x20, 0x20, 0x20, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x37, + 0x38, 0x43, 0x1B, 0x5B, + 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, + 0x5B, 0x36, 0x43, 0x1B, + 0x5B, 0x31, 0x6D, 0x46, 0x31, 0x2D, 0x46, 0x38, 0x1B, 0x5B, 0x33, 0x30, + 0x6D, 0x20, 0x43, 0x6F, + 0x6E, 0x73, 0x6F, 0x6C, 0x65, 0x73, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, + 0x65, 0x6C, 0x6C, 0x65, + 0x73, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x46, 0x39, 0x20, 0x1B, 0x5B, + 0x33, 0x30, 0x6D, 0x44, + 0x65, 0x62, 0x75, 0x67, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x46, 0x31, + 0x30, 0x20, 0x1B, 0x5B, + 0x33, 0x30, 0x6D, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x69, 0x71, 0x75, + 0x65, 0x20, 0x1B, 0x5B, 0x33, 0x37, 0x6D, 0x46, 0x31, 0x31, 0x20, 0x1B, + 0x5B, 0x33, 0x30, 0x6D, + 0x41, 0x69, 0x64, 0x65, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, 0x31, 0x30, + 0x43, 0x1B, 0x5B, 0x31, + 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, 0x1B, 0x5B, + 0x37, 0x38, 0x43, 0x1B, + 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, 0xB3, 0xB3, 0x1B, 0x5B, 0x30, 0x6D, + 0x20, 0x20, 0x20, 0x44, + 0x65, 0x76, 0x65, 0x6C, 0x6F, 0x70, 0x70, 0x65, 0x20, 0x70, 0x61, 0x72, + 0x20, 0x1B, 0x5B, 0x35, + 0x3B, 0x31, 0x3B, 0x34, 0x37, 0x6D, 0x4D, 0x72, 0x4E, 0x6F, 0x70, 0x1B, + 0x5B, 0x30, 0x6D, 0x1B, + 0x5B, 0x35, 0x36, 0x43, 0xB3, 0x1B, 0x5B, 0x31, 0x3B, 0x33, 0x30, 0x6D, + 0xC0, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x1B, 0x5B, 0x30, 0x6D, 0xC4, + 0x1B, 0x5B, 0x31, 0x3B, + 0x33, 0x30, 0x6D, 0xC4, 0x1B, 0x5B, 0x30, 0x6D, 0xC4, 0xC4, 0x1B, 0x5B, + 0x31, 0x6D, 0xD9, 0x00 }; diff --git a/system/makefile b/system/makefile index d75dd50..9846154 100755 --- a/system/makefile +++ b/system/makefile @@ -20,6 +20,7 @@ clean: rm -f *.bin rm -f *.sys rm -f *.s + rm -f *.c~ indent: indent -linux -i8 -ts8 *.c diff --git a/system/system.c b/system/system.c index 079476f..b704769 100755 --- a/system/system.c +++ b/system/system.c @@ -50,22 +50,22 @@ int main(unsigned long magic, unsigned long addr) printf(ansilogo); print("\033[37m\033[0m -Chargement noyaux\000"); - ok(); + ok(); - - printf ("\033[37m\033[0m -Nombre magique multiboot2 : %X\000", (u32) magic); - if (magic == MULTIBOOT2_BOOTLOADER_MAGIC) - ok(); - else - error(); + printf("\033[37m\033[0m -Nombre magique multiboot2 : %X\000", + (u32) magic); + if (magic == MULTIBOOT2_BOOTLOADER_MAGIC) + ok(); + else + error(); print("\033[37m\033[0m -Initilisation de la memoire (GDT)\000"); - initgdt(&&next); -next: + initgdt(&&next); + next: ok(); print("\033[37m\033[0m -Initilisation des taches (TSR)\000"); - inittr(); + inittr(); ok(); print("\033[37m\033[0m -Initilisation des interruptions (IDT/PIC)\000"); @@ -97,5 +97,5 @@ next: initsyscall(); ok(); - shell(); + shell(); }