From 5b3dbd536ceb25f4ba013e8159d9952f254a9d92 Mon Sep 17 00:00:00 2001 From: paul Date: Sun, 18 Jan 2026 18:40:51 -0500 Subject: [PATCH] upload image, gui, and debug code --- Debug.h | 26 ++ GUI_Paint.cpp | 678 ++++++++++++++++++++++++++++++++++++++++++++++++++ GUI_Paint.h | 191 ++++++++++++++ image.cpp | 616 +++++++++++++++++++++++++++++++++++++++++++++ image.h | 7 + 5 files changed, 1518 insertions(+) create mode 100644 Debug.h create mode 100644 GUI_Paint.cpp create mode 100644 GUI_Paint.h create mode 100644 image.cpp create mode 100644 image.h diff --git a/Debug.h b/Debug.h new file mode 100644 index 0000000..c15c851 --- /dev/null +++ b/Debug.h @@ -0,0 +1,26 @@ +/***************************************************************************** +* | File : Debug.h +* | Author : Waveshare team +* | Function : debug with prntf +* | Info : +* Image scanning +* Please use progressive scanning to generate images or fonts +*---------------- +* | This version: V1.0 +* | Date : 2018-01-11 +* | Info : Basic version +* +******************************************************************************/ +#ifndef __DEBUG_H +#define __DEBUG_H + +#include "stdio.h" + +#define DEV_DEBUG 1 +#if DEV_DEBUG + #define Debug(__info,...) printf("Debug : " __info,##__VA_ARGS__) +#else + #define DEBUG(__info,...) +#endif + +#endif diff --git a/GUI_Paint.cpp b/GUI_Paint.cpp new file mode 100644 index 0000000..e11e52c --- /dev/null +++ b/GUI_Paint.cpp @@ -0,0 +1,678 @@ +/***************************************************************************** + | File : GUI_Paint.c + | Author : Waveshare team + | Function : Achieve drawing: draw points, lines, boxes, circles and + their size, solid dotted line, solid rectangle hollow + rectangle, solid circle hollow circle. + | Info : + Achieve display characters: Display a single character, string, number + Achieve time display: adaptive size display time minutes and seconds + ---------------- + | This version: V1.0 + | Date : 2018-11-15 + | Info : + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documnetation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +******************************************************************************/ +#include "GUI_Paint.h" +#include "DEV_Config.h" +#include +#include +#include //memset() +#include + +volatile PAINT Paint; + +/****************************************************************************** + function: Create Image + parameter: + image : Pointer to the image cache + width : The width of the picture + Height : The height of the picture + Color : Whether the picture is inverted +******************************************************************************/ +void Paint_NewImage(UWORD Width, UWORD Height, UWORD Rotate, UWORD Color) +{ + Paint.WidthMemory = Width; + Paint.HeightMemory = Height; + Paint.Color = Color; + Paint.WidthByte = Width; + Paint.HeightByte = Height; + + Paint.Rotate = Rotate; + Paint.Mirror = MIRROR_NONE; + + if (Rotate == ROTATE_0 || Rotate == ROTATE_180) { + Paint.Width = Width; + Paint.Height = Height; + } else { + Paint.Width = Height; + Paint.Height = Width; + } +} + +/****************************************************************************** + function: Select Image Rotate + parameter: + Rotate : 0,90,180,270 +******************************************************************************/ +void Paint_SetRotate(UWORD Rotate) +{ + if (Rotate == ROTATE_0 || Rotate == ROTATE_90 || Rotate == ROTATE_180 || Rotate == ROTATE_270) { + //Debug("Set image Rotate %d\r\n", Rotate); + Paint.Rotate = Rotate; + } else { + //Debug("rotate = 0, 90, 180, 270\r\n"); + // exit(0); + } +} + +/****************************************************************************** + function: Select Image mirror + parameter: + mirror : Not mirror,Horizontal mirror,Vertical mirror,Origin mirror +******************************************************************************/ +void Paint_SetMirroring(UBYTE mirror) +{ + if (mirror == MIRROR_NONE || mirror == MIRROR_HORIZONTAL || + mirror == MIRROR_VERTICAL || mirror == MIRROR_ORIGIN) { + //Debug("mirror image x:%s, y:%s\r\n", (mirror & 0x01) ? "mirror" : "none", ((mirror >> 1) & 0x01) ? "mirror" : "none"); + Paint.Mirror = mirror; + } else { + //Debug("mirror should be MIRROR_NONE, MIRROR_HORIZONTAL, \ + MIRROR_VERTICAL or MIRROR_ORIGIN\r\n"); + //exit(0); + } +} + +/****************************************************************************** + function: Draw Pixels + parameter: + Xpoint : At point X + Ypoint : At point Y + Color : Painted colors +******************************************************************************/ +void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color) +{ + if (Xpoint > Paint.Width || Ypoint > Paint.Height) { + //Debug("Exceeding display boundaries\r\n"); + return; + } + UWORD X, Y; + + switch (Paint.Rotate) { + case 0: + X = Xpoint; + Y = Ypoint; + break; + case 90: + X = Paint.WidthMemory - Ypoint - 1; + Y = Xpoint; + break; + case 180: + X = Paint.WidthMemory - Xpoint - 1; + Y = Paint.HeightMemory - Ypoint - 1; + break; + case 270: + X = Ypoint; + Y = Paint.HeightMemory - Xpoint - 1; + break; + + default: + return; + } + + switch (Paint.Mirror) { + case MIRROR_NONE: + break; + case MIRROR_HORIZONTAL: + X = Paint.WidthMemory - X - 1; + break; + case MIRROR_VERTICAL: + Y = Paint.HeightMemory - Y - 1; + break; + case MIRROR_ORIGIN: + X = Paint.WidthMemory - X - 1; + Y = Paint.HeightMemory - Y - 1; + break; + default: + return; + } + + // printf("x = %d, y = %d\r\n", X, Y); + if (X > Paint.WidthMemory || Y > Paint.HeightMemory) { + //Debug("Exceeding display boundaries\r\n"); + return; + } + + // UDOUBLE Addr = X / 8 + Y * Paint.WidthByte; + LCD_DrawPaint(X, Y, Color); +} + +/****************************************************************************** + function: Clear the color of the picture + parameter: + Color : Painted colors +******************************************************************************/ +void Paint_Clear(UWORD Color) +{ + LCD_SetWindow(0, 0, Paint.WidthByte , Paint.HeightByte); + for (UWORD Y = 0; Y < Paint.HeightByte; Y++) { + for (UWORD X = 0; X < Paint.WidthByte; X++ ) {//8 pixel = 1 byte + LCD_WriteData_Word(Color); + } + } +} + +/****************************************************************************** + function: Clear the color of a window + parameter: + Xstart : x starting point + Ystart : Y starting point + Xend : x end point + Yend : y end point +******************************************************************************/ +void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color) +{ + UWORD X, Y; + for (Y = Ystart; Y < Yend; Y++) { + for (X = Xstart; X < Xend; X++) {//8 pixel = 1 byte + Paint_SetPixel(X, Y, Color); + } + } +} + +/****************************************************************************** +function: Draw Point(Xpoint, Ypoint) Fill the color +parameter: + Xpoint : The Xpoint coordinate of the point + Ypoint : The Ypoint coordinate of the point + Color : Set color + Dot_Pixel : point size +******************************************************************************/ +void Paint_DrawPoint( UWORD Xpoint, UWORD Ypoint, UWORD Color, + DOT_PIXEL Dot_Pixel,DOT_STYLE Dot_FillWay) +{ + if (Xpoint > Paint.Width || Ypoint > Paint.Height) { + Debug("Paint_DrawPoint Input exceeds the normal display range\r\n"); + return; + } + + int16_t XDir_Num , YDir_Num; + if (Dot_FillWay == DOT_FILL_AROUND) { + for (XDir_Num = 0; XDir_Num < 2*Dot_Pixel - 1; XDir_Num++) { + for (YDir_Num = 0; YDir_Num < 2 * Dot_Pixel - 1; YDir_Num++) { + if(Xpoint + XDir_Num - Dot_Pixel < 0 || Ypoint + YDir_Num - Dot_Pixel < 0) + break; + // printf("x = %d, y = %d\r\n", Xpoint + XDir_Num - Dot_Pixel, Ypoint + YDir_Num - Dot_Pixel); + Paint_SetPixel(Xpoint + XDir_Num - Dot_Pixel, Ypoint + YDir_Num - Dot_Pixel, Color); + } + } + } else { + for (XDir_Num = 0; XDir_Num < Dot_Pixel; XDir_Num++) { + for (YDir_Num = 0; YDir_Num < Dot_Pixel; YDir_Num++) { + Paint_SetPixel(Xpoint + XDir_Num - 1, Ypoint + YDir_Num - 1, Color); + } + } + } +} + +/****************************************************************************** +function: Draw a line of arbitrary slope +parameter: + Xstart :Starting Xpoint point coordinates + Ystart :Starting Xpoint point coordinates + Xend :End point Xpoint coordinate + Yend :End point Ypoint coordinate + Color :The color of the line segment +******************************************************************************/ +void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, + UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style) +{ + if (Xstart > Paint.Width || Ystart > Paint.Height || + Xend > Paint.Width || Yend > Paint.Height) { + Debug("Paint_DrawLine Input exceeds the normal display range\r\n"); + return; + } + + UWORD Xpoint = Xstart; + UWORD Ypoint = Ystart; + int dx = (int)Xend - (int)Xstart >= 0 ? Xend - Xstart : Xstart - Xend; + int dy = (int)Yend - (int)Ystart <= 0 ? Yend - Ystart : Ystart - Yend; + + // Increment direction, 1 is positive, -1 is counter; + int XAddway = Xstart < Xend ? 1 : -1; + int YAddway = Ystart < Yend ? 1 : -1; + + //Cumulative error + int Esp = dx + dy; + char Dotted_Len = 0; + + for (;;) { + Dotted_Len++; + //Painted dotted line, 2 point is really virtual + if (Line_Style == LINE_STYLE_DOTTED && Dotted_Len % 3 == 0) { + //Debug("LINE_DOTTED\r\n"); + Paint_DrawPoint(Xpoint, Ypoint, IMAGE_BACKGROUND, Line_width, DOT_STYLE_DFT); + Dotted_Len = 0; + } else { + Paint_DrawPoint(Xpoint, Ypoint, Color, Line_width, DOT_STYLE_DFT); + } + if (2 * Esp >= dy) { + if (Xpoint == Xend) + break; + Esp += dy; + Xpoint += XAddway; + } + if (2 * Esp <= dx) { + if (Ypoint == Yend) + break; + Esp += dx; + Ypoint += YAddway; + } + } +} + +/****************************************************************************** +function: Draw a rectangle +parameter: + Xstart :Rectangular Starting Xpoint point coordinates + Ystart :Rectangular Starting Xpoint point coordinates + Xend :Rectangular End point Xpoint coordinate + Yend :Rectangular End point Ypoint coordinate + Color :The color of the Rectangular segment + Filled : Whether it is filled--- 1 solid 0:empty +******************************************************************************/ +void Paint_DrawRectangle( UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, + UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Filled ) +{ + if (Xstart > Paint.Width || Ystart > Paint.Height || + Xend > Paint.Width || Yend > Paint.Height) { + Debug("Input exceeds the normal display range\r\n"); + return; + } + + if (Filled ) { + UWORD Ypoint; + for(Ypoint = Ystart; Ypoint < Yend; Ypoint++) { + Paint_DrawLine(Xstart, Ypoint, Xend, Ypoint, Color ,Line_width, LINE_STYLE_SOLID); + } + } else { + Paint_DrawLine(Xstart, Ystart, Xend, Ystart, Color ,Line_width, LINE_STYLE_SOLID); + Paint_DrawLine(Xstart, Ystart, Xstart, Yend, Color ,Line_width, LINE_STYLE_SOLID); + Paint_DrawLine(Xend, Yend, Xend, Ystart, Color ,Line_width, LINE_STYLE_SOLID); + Paint_DrawLine(Xend, Yend, Xstart, Yend, Color ,Line_width, LINE_STYLE_SOLID); + } +} + +/****************************************************************************** +function: Use the 8-point method to draw a circle of the + specified size at the specified position-> +parameter: + X_Center :Center X coordinate + Y_Center :Center Y coordinate + Radius :circle Radius + Color :The color of the :circle segment + Filled : Whether it is filled: 1 filling 0:Do not +******************************************************************************/ +void Paint_DrawCircle( UWORD X_Center, UWORD Y_Center, UWORD Radius, + UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill ) +{ + if (X_Center > Paint.Width || Y_Center >= Paint.Height) { + Debug("Paint_DrawCircle Input exceeds the normal display range\r\n"); + return; + } + + //Draw a circle from(0, R) as a starting point + int16_t XCurrent, YCurrent; + XCurrent = 0; + YCurrent = Radius; + + //Cumulative error,judge the next point of the logo + int16_t Esp = 3 - (Radius << 1 ); + + int16_t sCountY; + if (Draw_Fill == DRAW_FILL_FULL) { + while (XCurrent <= YCurrent ) { //Realistic circles + for (sCountY = XCurrent; sCountY <= YCurrent; sCountY ++ ) { + Paint_DrawPoint(X_Center + XCurrent, Y_Center + sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//1 + Paint_DrawPoint(X_Center - XCurrent, Y_Center + sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//2 + Paint_DrawPoint(X_Center - sCountY, Y_Center + XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//3 + Paint_DrawPoint(X_Center - sCountY, Y_Center - XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//4 + Paint_DrawPoint(X_Center - XCurrent, Y_Center - sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//5 + Paint_DrawPoint(X_Center + XCurrent, Y_Center - sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//6 + Paint_DrawPoint(X_Center + sCountY, Y_Center - XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//7 + Paint_DrawPoint(X_Center + sCountY, Y_Center + XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT); + } + if (Esp < 0 ) + Esp += 4 * XCurrent + 6; + else { + Esp += 10 + 4 * (XCurrent - YCurrent ); + YCurrent --; + } + XCurrent ++; + } + } else { //Draw a hollow circle + while (XCurrent <= YCurrent ) { + Paint_DrawPoint(X_Center + XCurrent, Y_Center + YCurrent, Color, Line_width, DOT_STYLE_DFT);//1 + Paint_DrawPoint(X_Center - XCurrent, Y_Center + YCurrent, Color, Line_width, DOT_STYLE_DFT);//2 + Paint_DrawPoint(X_Center - YCurrent, Y_Center + XCurrent, Color, Line_width, DOT_STYLE_DFT);//3 + Paint_DrawPoint(X_Center - YCurrent, Y_Center - XCurrent, Color, Line_width, DOT_STYLE_DFT);//4 + Paint_DrawPoint(X_Center - XCurrent, Y_Center - YCurrent, Color, Line_width, DOT_STYLE_DFT);//5 + Paint_DrawPoint(X_Center + XCurrent, Y_Center - YCurrent, Color, Line_width, DOT_STYLE_DFT);//6 + Paint_DrawPoint(X_Center + YCurrent, Y_Center - XCurrent, Color, Line_width, DOT_STYLE_DFT);//7 + Paint_DrawPoint(X_Center + YCurrent, Y_Center + XCurrent, Color, Line_width, DOT_STYLE_DFT);//0 + + if (Esp < 0 ) + Esp += 4 * XCurrent + 6; + else { + Esp += 10 + 4 * (XCurrent - YCurrent ); + YCurrent --; + } + XCurrent ++; + } + } +} + +/****************************************************************************** + function: Show English characters + parameter: + Xpoint :X coordinate + Ypoint :Y coordinate + Acsii_Char :To display the English characters + Font :A structure pointer that displays a character size + Color_Background : Select the background color of the English character + Color_Foreground : Select the foreground color of the English character +******************************************************************************/ +void Paint_DrawChar(UWORD Xpoint, UWORD Ypoint, const char Acsii_Char, + sFONT* Font, UWORD Color_Background, UWORD Color_Foreground) +{ + + UWORD Page, Column; + + if (Xpoint > Paint.Width || Ypoint > Paint.Height) { + //Debug("Paint_DrawChar Input exceeds the normal display range\r\n"); + return; + } + uint32_t Char_Offset = (Acsii_Char - ' ') * Font->Height * (Font->Width / 8 + (Font->Width % 8 ? 1 : 0)); + const unsigned char *ptr = &Font->table[Char_Offset]; + + for ( Page = 0; Page < Font->Height; Page ++ ) { + for ( Column = 0; Column < Font->Width; Column ++ ) { + + //To determine whether the font background color and screen background color is consistent + if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan + if (pgm_read_byte(ptr) & (0x80 >> (Column % 8))) + Paint_SetPixel (Xpoint + Column, Ypoint + Page, Color_Foreground ); + } else { + if (pgm_read_byte(ptr) & (0x80 >> (Column % 8))) { + Paint_SetPixel (Xpoint + Column, Ypoint + Page, Color_Foreground ); + } else { + Paint_SetPixel (Xpoint + Column, Ypoint + Page, Color_Background ); + } + } + //One pixel is 8 bits + if (Column % 8 == 7) { + ptr++; + } + }/* Write a line */ + if (Font->Width % 8 != 0) { + ptr++; + } + }/* Write all */ +} + +/****************************************************************************** + function: Display the string + parameter: + Xstart :X coordinate + Ystart :Y coordinate + pString :The first address of the English string to be displayed + Font :A structure pointer that displays a character size + Color_Background : Select the background color of the English character + Color_Foreground : Select the foreground color of the English character +******************************************************************************/ +void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, + sFONT* Font, UWORD Color_Background, UWORD Color_Foreground ) +{ + UWORD Xpoint = Xstart; + UWORD Ypoint = Ystart; + + if (Xstart > Paint.Width || Ystart > Paint.Height) { + //Debug("Paint_DrawString_EN Input exceeds the normal display range\r\n"); + return; + } + + while (* pString != '\0') { + //if X direction filled , reposition to(Xstart,Ypoint),Ypoint is Y direction plus the Height of the character + if ((Xpoint + Font->Width ) > Paint.Width ) { + Xpoint = Xstart; + Ypoint += Font->Height; + } + + // If the Y direction is full, reposition to(Xstart, Ystart) + if ((Ypoint + Font->Height ) > Paint.Height ) { + Xpoint = Xstart; + Ypoint = Ystart; + } + Paint_DrawChar(Xpoint, Ypoint, * pString, Font, Color_Background, Color_Foreground); + + //The next character of the address + pString ++; + + //The next word of the abscissa increases the font of the broadband + Xpoint += Font->Width; + } +} + + +/****************************************************************************** + function: Display the string + parameter: + Xstart :X coordinate + Ystart :Y coordinate + pString :The first address of the Chinese string and English + string to be displayed + Font :A structure pointer that displays a character size + Color_Background : Select the background color of the English character + Color_Foreground : Select the foreground color of the English character +******************************************************************************/ +void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Background, UWORD Color_Foreground) +{ + const unsigned char* p_text = pString; + + int refcolumn = Xstart; + int i, j, Num; + /* Send the string character by character on EPD */ + while (*p_text != 0) { + if (*p_text < 0x7F) { //ASCII + for (Num = 0; Num < font->size ; Num++) { + if (*p_text == pgm_read_byte(&font->table[Num].index[0])) { + const char* ptr = &font->table[Num].matrix[0]; + + for (j = 0; j < font->Height; j++) { + for (i = 0; i < font->Width; i++) { + if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) { + Paint_SetPixel(refcolumn + i,Ystart + j, Color_Foreground); + } + if (i % 8 == 7) { + ptr++; + } + } + if (font->Width % 8 != 0) { + ptr++; + } + } + break; + } + } + /* Point on the next character */ + p_text += 1; + /* Decrement the column position by 16 */ + refcolumn += font->ASCII_Width; + } else { //中文 + for (Num = 0; Num < font->size ; Num++) { + if ((*p_text == pgm_read_byte(&font->table[Num].index[0])) && (*(p_text + 1) == pgm_read_byte(&font->table[Num].index[1])) && (*(p_text + 2) == pgm_read_byte(&font->table[Num].index[2]))) { + const char* ptr = &font->table[Num].matrix[0]; + + for (j = 0; j < font->Height; j++) { + for (i = 0; i < font->Width; i++) { + if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) { + Paint_SetPixel(refcolumn + i,Ystart + j, Color_Foreground); + } + if (i % 8 == 7) { + ptr++; + } + } + if (font->Width % 8 != 0) { + ptr++; + } + } + break; + } + } + /* Point on the next character */ + p_text += 3; + /* Decrement the column position by 16 */ + refcolumn += font->Width; + } + } +} + + +/****************************************************************************** + function: Display nummber + parameter: + Xstart :X coordinate + Ystart : Y coordinate + Nummber : The number displayed + Font :A structure pointer that displays a character size + Color_Background : Select the background color of the English character + Color_Foreground : Select the foreground color of the English character +******************************************************************************/ +#define ARRAY_LEN 50 +void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber, + sFONT* Font, UWORD Color_Background, UWORD Color_Foreground ) +{ + + int16_t Num_Bit = 0, Str_Bit = 0; + uint8_t Str_Array[ARRAY_LEN] = {0}, Num_Array[ARRAY_LEN] = {0}; + uint8_t *pStr = Str_Array; + + if (Xpoint > Paint.Width || Ypoint > Paint.Height) { + //Debug("Paint_DisNum Input exceeds the normal display range\r\n"); + return; + } + + //Converts a number to a string + do{ + Num_Array[Num_Bit] = Nummber % 10 + '0'; + Num_Bit++; + Nummber /= 10; + }while (Nummber); + + //The string is inverted + while (Num_Bit > 0) { + Str_Array[Str_Bit] = Num_Array[Num_Bit - 1]; + Str_Bit ++; + Num_Bit --; + } + + //show + Paint_DrawString_EN(Xpoint, Ypoint, (const char*)pStr, Font, Color_Background, Color_Foreground); +} +/****************************************************************************** +function: Display float number +parameter: + Xstart :X coordinate + Ystart : Y coordinate + Nummber : The float data that you want to display + Decimal_Point : Show decimal places + Font :A structure pointer that displays a character size + Color : Select the background color of the English character +******************************************************************************/ +void Paint_DrawFloatNum(UWORD Xpoint, UWORD Ypoint, double Nummber, UBYTE Decimal_Point, + sFONT* Font, UWORD Color_Background, UWORD Color_Foreground) +{ + char Str[ARRAY_LEN] = {0}; + dtostrf(Nummber,0,Decimal_Point+2,Str); + char * pStr= (char *)malloc((strlen(Str))*sizeof(char)); + memcpy(pStr,Str,(strlen(Str)-2)); + * (pStr+strlen(Str)-1)='\0'; + if((*(pStr+strlen(Str)-3))=='.') + { + *(pStr+strlen(Str)-3)='\0'; + } + //show + Paint_DrawString_EN(Xpoint, Ypoint, (const char*)pStr, Font, Color_Foreground, Color_Background); + free(pStr); + pStr=NULL; +} +/****************************************************************************** + function: Display time + parameter: + Xstart :X coordinate + Ystart : Y coordinate + pTime : Time-related structures + Font :A structure pointer that displays a character size + Color : Select the background color of the English character +******************************************************************************/ +void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, + UWORD Color_Background, UWORD Color_Foreground) +{ + uint8_t value[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; + + UWORD Dx = Font->Width; + + //Write data into the cache + Paint_DrawChar(Xstart , Ystart, value[pTime->Hour / 10], Font, Color_Background, Color_Foreground); + Paint_DrawChar(Xstart + Dx , Ystart, value[pTime->Hour % 10], Font, Color_Background, Color_Foreground); + Paint_DrawChar(Xstart + Dx + Dx / 4 + Dx / 2 , Ystart, ':' , Font, Color_Background, Color_Foreground); + Paint_DrawChar(Xstart + Dx * 2 + Dx / 2 , Ystart, value[pTime->Min / 10] , Font, Color_Background, Color_Foreground); + Paint_DrawChar(Xstart + Dx * 3 + Dx / 2 , Ystart, value[pTime->Min % 10] , Font, Color_Background, Color_Foreground); + Paint_DrawChar(Xstart + Dx * 4 + Dx / 2 - Dx / 4, Ystart, ':' , Font, Color_Background, Color_Foreground); + Paint_DrawChar(Xstart + Dx * 5 , Ystart, value[pTime->Sec / 10] , Font, Color_Background, Color_Foreground); + Paint_DrawChar(Xstart + Dx * 6 , Ystart, value[pTime->Sec % 10] , Font, Color_Background, Color_Foreground); +} + +/****************************************************************************** + function: Display image + parameter: + image :Image start address + xStart : X starting coordinates + yStart : Y starting coordinates + xEnd :Image width + yEnd : Image height +******************************************************************************/ +void Paint_DrawImage(const unsigned char *image, UWORD xStart, UWORD yStart, UWORD W_Image, UWORD H_Image) +{ + int i, j; + for (j = 0; j < H_Image; j++) { + for (i = 0; i < W_Image; i++) { + if (xStart + i < LCD_WIDTH && yStart + j < LCD_HEIGHT) //Exceeded part does not display + Paint_SetPixel(xStart + i, yStart + j, (pgm_read_byte(image + j * W_Image * 2 + i * 2 + 1)) << 8 | (pgm_read_byte(image + j * W_Image * 2 + i * 2))); + //Using arrays is a property of sequential storage, accessing the original array by algorithm + //j*W_Image*2 Y offset + //i*2 X offset + //pgm_read_byte() + } + } + +} diff --git a/GUI_Paint.h b/GUI_Paint.h new file mode 100644 index 0000000..7966b99 --- /dev/null +++ b/GUI_Paint.h @@ -0,0 +1,191 @@ +/***************************************************************************** +* | File : GUI_Paint.h +* | Author : Waveshare team +* | Function : Achieve drawing: draw points, lines, boxes, circles and +* their size, solid dotted line, solid rectangle hollow +* rectangle, solid circle hollow circle. +* | Info : +* Achieve display characters: Display a single character, string, number +* Achieve time display: adaptive size display time minutes and seconds +*---------------- +* | This version: V1.0 +* | Date : 2018-11-15 +* | Info : +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documnetation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +* +******************************************************************************/ +#ifndef __GUI_PAINT_H +#define __GUI_PAINT_H + +#include "DEV_Config.h" +#include "LCD_Driver.h" +#include "fonts.h" +#include "Debug.h" +#include +/** + * Image attributes +**/ +typedef struct { + UBYTE *Image; + UWORD Width; + UWORD Height; + UWORD WidthMemory; + UWORD HeightMemory; + UWORD Color; + UWORD Rotate; + UWORD Mirror; + UWORD WidthByte; + UWORD HeightByte; +} PAINT; +extern volatile PAINT Paint; + +/** + * Display rotate +**/ +#define ROTATE_0 0 +#define ROTATE_90 90 +#define ROTATE_180 180 +#define ROTATE_270 270 + +/** + * Display Flip +**/ +typedef enum { + MIRROR_NONE = 0x00, + MIRROR_HORIZONTAL = 0x01, + MIRROR_VERTICAL = 0x02, + MIRROR_ORIGIN = 0x03, +} MIRROR_IMAGE; +#define MIRROR_IMAGE_DFT MIRROR_NONE + +/** + * image color +**/ + +#define WHITE 0xFFFF +#define BLACK 0x0000 +#define BLUE 0x001F +#define BRED 0XF81F +#define GRED 0XFFE0 +#define GBLUE 0X07FF +#define RED 0xF800 +#define MAGENTA 0xF81F +#define GREEN 0x07E0 +#define CYAN 0x7FFF +#define YELLOW 0xFFE0 +#define BROWN 0XBC40 +#define BRRED 0XFC07 +#define GRAY 0X8430 +#define DARKBLUE 0X01CF +#define LIGHTBLUE 0X7D7C +#define GRAYBLUE 0X5458 +#define LIGHTGREEN 0X841F +#define LGRAY 0XC618 +#define LGRAYBLUE 0XA651 +#define LBBLUE 0X2B12 + + +#define IMAGE_BACKGROUND WHITE +#define FONT_FOREGROUND BLACK +#define FONT_BACKGROUND WHITE + +/** + * The size of the point +**/ +typedef enum { + DOT_PIXEL_1X1 = 1, // 1 x 1 + DOT_PIXEL_2X2 , // 2 X 2 + DOT_PIXEL_3X3 , // 3 X 3 + DOT_PIXEL_4X4 , // 4 X 4 + DOT_PIXEL_5X5 , // 5 X 5 + DOT_PIXEL_6X6 , // 6 X 6 + DOT_PIXEL_7X7 , // 7 X 7 + DOT_PIXEL_8X8 , // 8 X 8 +} DOT_PIXEL; +#define DOT_PIXEL_DFT DOT_PIXEL_1X1 //Default dot pilex + +/** + * Point size fill style +**/ +typedef enum { + DOT_FILL_AROUND = 1, // dot pixel 1 x 1 + DOT_FILL_RIGHTUP , // dot pixel 2 X 2 +} DOT_STYLE; +#define DOT_STYLE_DFT DOT_FILL_AROUND //Default dot pilex + +/** + * Line style, solid or dashed +**/ +typedef enum { + LINE_STYLE_SOLID = 0, + LINE_STYLE_DOTTED, +} LINE_STYLE; + +/** + * Whether the graphic is filled +**/ +typedef enum { + DRAW_FILL_EMPTY = 0, + DRAW_FILL_FULL, +} DRAW_FILL; + +/** + * Custom structure of a time attribute +**/ +typedef struct { + UWORD Year; //0000 + UBYTE Month; //1 - 12 + UBYTE Day; //1 - 30 + UBYTE Hour; //0 - 23 + UBYTE Min; //0 - 59 + UBYTE Sec; //0 - 59 +} PAINT_TIME; +extern PAINT_TIME sPaint_time; + +//init and Clear +void Paint_NewImage(UWORD Width, UWORD Height, UWORD Rotate, UWORD Color); +void Paint_SelectImage(UBYTE *image); +void Paint_SetRotate(UWORD Rotate); +void Paint_SetMirroring(UBYTE mirror); +void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color); + +void Paint_Clear(UWORD Color); +void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color); + +//Drawing +void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_FillWay); +void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style); +void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Filled ); +void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill ); + +//Display string +void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Acsii_Char, sFONT* Font, UWORD Color_Background, UWORD Color_Foreground); +void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Background, UWORD Color_Foreground); +void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Background, UWORD Color_Foreground); +void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber, sFONT* Font, UWORD Color_Background, UWORD Color_Foreground); +void Paint_DrawFloatNum(UWORD Xpoint, UWORD Ypoint, double Nummber, UBYTE Decimal_Point, sFONT* Font, UWORD Color_Background, UWORD Color_Foreground); +void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Background, UWORD Color_Foreground); + + +//pic +void Paint_DrawImage(const unsigned char *image,UWORD Startx, UWORD Starty,UWORD Endx, UWORD Endy); + + +#endif diff --git a/image.cpp b/image.cpp new file mode 100644 index 0000000..f2fadb3 --- /dev/null +++ b/image.cpp @@ -0,0 +1,616 @@ +#include "image.h" + +const unsigned char gImage_70X70[9800] = { /* 0X00,0X10,0X46,0X00,0X46,0X00,0X01,0X1B, */ +0XFF,0XFF,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XEF,0XFF,0XEF,0XFF,0XF7,0XFF,0XF7, +0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7, +0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7, +0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7, +0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0X9E,0XE7,0XBF,0XE7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0XE7,0XFA,0X9D, +0XBB,0X85,0XDB,0X7D,0XDC,0X7D,0XDB,0X7D,0XDB,0X7D,0XDB,0X7D,0XDB,0X7D,0XDB,0X7D, +0XDB,0X7D,0XDB,0X7D,0XDB,0X7D,0XDC,0X7D,0XDB,0X7D,0XDB,0X7D,0XDC,0X7D,0XDB,0X7D, +0XDB,0X7D,0XDB,0X7D,0XDC,0X7D,0XDB,0X7D,0XDB,0X7D,0XDC,0X7D,0XDB,0X7D,0XDB,0X7D, +0XDB,0X7D,0XDC,0X7D,0XDB,0X7D,0XDB,0X7D,0XDC,0X7D,0XDB,0X7D,0XDC,0X7D,0XBC,0X7D, +0XDC,0X7D,0X3A,0X65,0X7B,0X6D,0XFC,0X7D,0XDC,0X85,0X3D,0X96,0XBE,0XAE,0XDE,0XB6, +0XFF,0XE7,0XFF,0XE7,0XFF,0XEF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5A,0X6D,0X5E,0X45,0X5E,0X3D, +0X3E,0X3D,0X3E,0X45,0X3E,0X3D,0X3E,0X3D,0X3F,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D, +0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D, +0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D, +0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D,0X5E,0X3D,0X3E,0X3D,0X7F,0X3D, +0X5E,0X3D,0XFD,0X34,0X3E,0X45,0XFD,0X3C,0XFC,0X44,0XFB,0X44,0X57,0X44,0X98,0X4C, +0X5A,0X75,0X3E,0XC7,0XFF,0XEF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0X9F,0XE7,0X5B,0X65,0X5F,0X3D,0X5F,0X35,0X5F,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X3E,0X3D,0X5F,0X3D,0X7E,0X3D, +0X3D,0X3D,0X5E,0X45,0X5E,0X45,0X5D,0X3D,0X5E,0X45,0X3D,0X45,0X1C,0X45,0XFB,0X44, +0X9C,0X65,0X1C,0X8E,0XFD,0XC6,0XFF,0XF7,0XFF,0XF7,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X9F,0XE7,0X7C,0X65,0X5F,0X3D,0X7F,0X3D,0X3E,0X3D,0X3D,0X3D,0X5E,0X3D,0X5E,0X3D, +0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45, +0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45, +0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45, +0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X7F,0X4D, +0X3D,0X3D,0X5F,0X45,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5F,0X45,0X3E,0X3D,0X1D,0X45, +0XB9,0X44,0X5D,0X8E,0XDF,0XDF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X7C,0X65, +0X5F,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X45, +0X5E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45, +0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45, +0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X45, +0X3E,0X45,0X5E,0X45,0X3E,0X3D,0X3E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X45,0X3E,0X3D,0X3E,0X45,0X3E,0X3D,0X5E,0X3D,0X3E,0X45,0XFB,0X3C, +0XD8,0X54,0X7C,0X9E,0X5E,0XD7,0XFF,0XF7,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X7B,0X65,0X5F,0X45,0X5E,0X45, +0X3D,0X45,0X5E,0X45,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5D,0X45,0X5E,0X45, +0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X3D,0X45,0X5E,0X45,0X5D,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0XFB,0X3C, +0X1A,0X65,0X9C,0XB6,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0X9F,0XE7,0X5B,0X65,0X5F,0X45,0X5E,0X3D,0X5D,0X45,0X3E,0X45, +0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5F,0X45,0X5F,0X3D,0X3E,0X3D,0X5E,0X45,0X5E,0X45, +0X3D,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X3D,0X3E,0X3D,0X7F,0X3D,0X3E,0X3D,0XFB,0X44, +0XD8,0X4C,0XBE,0XAE,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X9F,0XE7,0X5B,0X65,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X3E,0X45, +0X3E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X3E,0X45,0X5F,0X3D,0X5F,0X3D,0X3E,0X45,0X3E,0X3D,0X5E,0X45,0X1C,0X3D,0XFA,0X4C, +0XFE,0XB6,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5C,0X65, +0X5F,0X3D,0X5F,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45, +0X3E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45, +0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X3E,0X45, +0X3E,0X3D,0X5D,0X3D,0X5F,0X3D,0X3E,0X35,0X5E,0X3D,0X5E,0X45,0X3E,0X45,0X5E,0X45, +0X3E,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X45,0X7E,0X3D,0X3D,0X3D,0XB9,0X44,0XDB,0X8D, +0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5C,0X65,0X5F,0X3D,0X5E,0X3D, +0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X3E,0X45,0X3E,0X45,0X5E,0X45, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X45, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D, +0X1D,0X3D,0X5D,0X45,0X3D,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5E,0X45,0X5E,0X3D, +0X5E,0X45,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0XDB,0X4C,0XFB,0X8D,0X9F,0XE7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XBF,0XDF,0X5B,0X65,0X5F,0X45,0X5E,0X3D,0X3E,0X45,0X5E,0X45, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D, +0X5F,0X3D,0X5E,0X3D,0X5F,0X45,0X5E,0X3D,0X5F,0X3D,0X1B,0X45,0XD9,0X5C,0X1D,0X7E, +0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5F,0X35,0X3E,0X45,0XFB,0X44,0XFB,0X8D,0XFF,0XF7,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X9F,0XDF,0X5B,0X65,0X5F,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45, +0X3E,0X3D,0X5E,0X45,0XFB,0X3C,0X7A,0X7D,0XFF,0XE7,0X1B,0X8E,0X3C,0X4D,0X3E,0X3D, +0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X3E,0X45,0X5E,0X45,0XDA,0X4C,0X3C,0X9E,0XFF,0XE7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5B,0X65, +0X5F,0X45,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X3F,0X45,0X3E,0X45,0X5E,0X45,0X3D,0X45,0X5D,0X45,0X5D,0X45,0X5E,0X45,0X1D,0X45, +0X7A,0X6D,0X7E,0XDF,0XFF,0XFF,0X1B,0X8E,0X1D,0X45,0X3E,0X3D,0X3E,0X45,0X5E,0X45, +0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45, +0X5E,0X3D,0X5E,0X45,0XBA,0X44,0X7D,0XA6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5B,0X65,0X5F,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5F,0X3D, +0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0XFC,0X3C,0XD9,0X4C,0XFF,0XF7,0XFF,0XFF, +0XFF,0XF7,0X1B,0X8E,0X1C,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5F,0X45,0X5F,0X3D, +0X3E,0X35,0XDA,0X4C,0X1E,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5B,0X65,0X5F,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X45, +0X3E,0X45,0X1D,0X45,0X5A,0X5D,0X1E,0XC7,0XFF,0XF7,0XFF,0XFF,0XFF,0XF7,0X1B,0X8E, +0X1C,0X45,0X3E,0X3D,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X3E,0X3D,0X5E,0X3D,0X7E,0X45,0X1C,0X45, +0X3A,0X5D,0XFF,0XEF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X9F,0XDF,0X5B,0X65,0X5F,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X3D,0X45,0X57,0X44, +0XDF,0XD7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1B,0X8E,0X3D,0X4D,0X3E,0X45, +0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X7E,0X45,0X3E,0X3D,0X5E,0X45,0X3E,0X45,0X1D,0X45,0X1C,0X96, +0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5B,0X65, +0X5F,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5F,0X3D,0X5E,0X3D,0X5E,0X45,0X3D,0X3D,0X5B,0X65,0X5F,0XC7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1B,0X8E,0X1C,0X45,0X3E,0X45,0X3E,0X3D,0X5E,0X45, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X5E,0X45, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X3E,0X45,0XFA,0X54,0XDE,0XB6,0XFF,0XF7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5C,0X65,0X5F,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5F,0X45,0X5E,0X3D, +0X5D,0X45,0X9A,0X44,0X7C,0XAE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XF7,0X1B,0X8E,0X3C,0X4D,0X3E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X3F,0X45,0X5E,0X3D, +0X5E,0X35,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X39,0X6D,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5C,0X65,0X5F,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X3D,0X3D,0XFA,0X54,0XDE,0XB6, +0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1B,0X96, +0X3D,0X45,0X3E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X3E,0X45, +0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X3E,0X45,0X3F,0X45,0X5F,0X3D,0X7E,0X3D,0X5E,0X3D, +0X3E,0X45,0X1E,0X3D,0XBA,0X44,0XDD,0XB6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X9F,0XDF,0X5B,0X65,0X5F,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X3E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0XFC,0X3C,0X7E,0X9E,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1B,0X96,0X3C,0X45,0X3E,0X3D, +0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X3E,0X3D,0X3E,0X45,0X5E,0X3D, +0X5E,0X3D,0X3E,0X45,0X3E,0X45,0X5E,0X3D,0X7E,0X3D,0X5E,0X3D,0X3E,0X45,0X5F,0X3D, +0X3D,0X45,0XB8,0X4C,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5B,0X65, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X45, +0X5E,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D, +0X1D,0X3D,0X1F,0X66,0X3D,0X86,0X5C,0XA6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1B,0X96,0X3C,0X45,0X3E,0X3D,0X3E,0X45,0X5E,0X3D, +0X5E,0X3D,0X3E,0X3D,0X3E,0X45,0X3D,0X45,0X3D,0X45,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X5F,0X3D,0X5E,0X3D,0X3B,0X45, +0X1B,0X9E,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5B,0X65,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X1D,0X3D,0XDB,0X44,0XDA,0X3C,0XDB,0X3C,0XDB,0X3C,0XDA,0X44,0XDA,0X44, +0XDA,0X44,0XDB,0X44,0XFC,0X44,0X3D,0X45,0X5E,0X45,0X3E,0X3D,0X7E,0X45,0X5E,0X3D, +0X5F,0X3D,0X5E,0X45,0X1C,0X45,0XDA,0X44,0XDA,0X44,0XDA,0X44,0XDB,0X3C,0XFC,0X3C, +0X5D,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X3E,0X3D,0X5E,0X45,0X1D,0X3D, +0X78,0X3C,0XBD,0XAE,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XF7,0X1B,0X96,0X3D,0X45,0X3E,0X3D,0X3E,0X3D,0X5E,0X45,0X1C,0X45,0XB9,0X44, +0XB9,0X44,0XB9,0X44,0XBA,0X44,0XDB,0X44,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5E,0X3D, +0X5E,0X45,0X3E,0X3D,0X3F,0X45,0X5F,0X3D,0X5F,0X3D,0X5D,0X45,0XBC,0X75,0XFF,0XF7, +0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X5B,0X65,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X7E,0X55, +0XBF,0X96,0XDE,0X9E,0XDF,0X9E,0XDF,0X9E,0XDF,0XA6,0XDF,0X9E,0XDF,0XA6,0XBF,0XA6, +0X1D,0X8E,0XDB,0X44,0X3E,0X45,0X5D,0X3D,0X3E,0X45,0X3F,0X45,0X7E,0X3D,0X1D,0X3D, +0X1E,0X76,0XBF,0XA6,0XDF,0XA6,0XDF,0XA6,0XFF,0XA6,0X5E,0X86,0XFB,0X3C,0X5D,0X45, +0X3E,0X3D,0X5E,0X3D,0X5E,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X3D,0X5A,0X65,0XDF,0XE7, +0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1B,0X96, +0X3D,0X45,0X3F,0X45,0X7E,0X3D,0XFD,0X3C,0XDC,0X6D,0XBF,0XD7,0XBF,0XD7,0XDF,0XD7, +0XDF,0XD7,0XFF,0XA6,0XFC,0X3C,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X7F,0X45, +0X3F,0X3D,0X3F,0X3D,0X5E,0X3D,0X3D,0X3D,0X1A,0X55,0XDF,0XE7,0XFF,0XFF,0XFF,0XFF, +0X9F,0XDF,0X7C,0X65,0X5E,0X45,0X5F,0X3D,0X5E,0X3D,0XDB,0X44,0X3D,0X8E,0XFF,0XF7, +0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XDF,0XEF,0XBC,0X75, +0X3E,0X45,0X5F,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X3D,0XFB,0X4C,0X1E,0XBF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XEF,0XDA,0X44,0X5E,0X3D,0X3E,0X3D,0X5F,0X3D, +0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0XFC,0X3C,0X3C,0X96,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3D,0XD7,0X9C,0XAE,0X1C,0X8E,0X5D,0X3D,0X5F,0X35, +0X5D,0X3D,0XFC,0X44,0XBE,0XAE,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF, +0XFA,0X4C,0X3D,0X45,0X3E,0X45,0X5E,0X3D,0X3E,0X3D,0X5E,0X45,0X5F,0X3D,0X5F,0X3D, +0X5E,0X3D,0X5E,0X3D,0XFB,0X44,0X7C,0XAE,0XFF,0XFF,0XFF,0XFF,0X9F,0XDF,0X7B,0X65, +0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X1D,0X45,0X5C,0X65,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9D,0XA6,0X1D,0X3D,0X5E,0X3D, +0X7E,0X3D,0X3E,0X45,0X3D,0X45,0X9A,0X7D,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF7,0XDC,0X7D,0XFC,0X3C,0X5E,0X3D,0X3F,0X3D,0X7E,0X3D,0X5E,0X3D, +0X3E,0X45,0XD9,0X4C,0X1E,0XC7,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XBB,0X8D,0XBB,0X44,0X5C,0X55,0X3D,0X35,0X5F,0X3D,0X3D,0X45,0X5A,0X6D, +0X9F,0XD7,0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFE,0XFF,0XFF,0XF7,0XFC,0X8D,0XBA,0X3C, +0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X3E,0X3D,0X3E,0X3D,0X5E,0X45,0X3D,0X3D,0X1D,0X3D, +0X1D,0X45,0XD8,0X64,0XFF,0XF7,0XFF,0XFF,0X9F,0XDF,0X7B,0X65,0X5E,0X45,0X5F,0X3D, +0X5F,0X3D,0X5E,0X3D,0X79,0X3C,0XBF,0XEF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0X9F,0XD7,0X79,0X3C,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D, +0XFB,0X3C,0X9D,0XAE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFE,0XBE,0XFB,0X4C,0X5F,0X3D,0X3E,0X3D,0X7E,0X3D,0X3E,0X3D,0XFD,0X3C,0X3D,0X8E, +0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XE7,0X5B,0X65, +0X5E,0X45,0X3E,0X3D,0X3E,0X3D,0X5E,0X45,0XDB,0X44,0XBE,0XBE,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XDF,0X7B,0X6D,0X3D,0X3D,0X5E,0X3D, +0X5E,0X3D,0X7E,0X45,0X3E,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X3E,0X45,0X99,0X44, +0X9F,0XD7,0XFF,0XFF,0XBF,0XDF,0X7B,0X65,0X7E,0X3D,0X7E,0X3D,0X5E,0X3D,0X3E,0X3D, +0XDA,0X44,0X1E,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF7,0X97,0X5C,0X3D,0X3D,0X5F,0X3D,0X5F,0X3D,0X99,0X3C,0XBF,0XE7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XF7,0X7A,0X75, +0X3F,0X3D,0X5D,0X3D,0X5E,0X45,0X5E,0X45,0XBB,0X3C,0X7F,0XCF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X9D,0XAE,0XFB,0X44,0X5E,0X3D,0X5E,0X3D, +0X3E,0X45,0X5D,0X45,0X58,0X3C,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1C,0X96,0X1C,0X45,0X5E,0X3D,0X3E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X45,0X5F,0X45,0X5F,0X35,0X3E,0X45,0XFC,0X44,0X9D,0XA6,0XFF,0XFF, +0X9F,0XDF,0X5B,0X65,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D,0X1C,0X45,0XDB,0X7D, +0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFE,0XBE,0XDB,0X44,0X5E,0X3D,0X1D,0X45,0X3B,0X65,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7E,0XA6,0X1C,0X3D,0X5E,0X3D, +0X5E,0X3D,0XFC,0X3C,0X5B,0X65,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF7,0X1B,0X5D,0X1D,0X3D,0X5D,0X45,0XFC,0X34,0X7E,0X45,0XFB,0X44, +0X1C,0X86,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XEF,0X98,0X4C,0X3D,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5F,0X3D,0X5F,0X3D,0X5E,0X45,0X3D,0X3D,0XFB,0X85,0XFF,0XFF,0X9F,0XE7,0X5C,0X65, +0X5F,0X45,0X5F,0X3D,0X5E,0X3D,0X3E,0X3D,0X5E,0X45,0XFA,0X54,0X1E,0XC7,0XFF,0XFF, +0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X7B,0X5D, +0X3D,0X3D,0XDA,0X44,0X3C,0X96,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XD7,0X78,0X44,0X5E,0X3D,0X5E,0X3D,0XDA,0X4C, +0X7D,0XA6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XDF, +0XBA,0X34,0X5E,0X3D,0X3E,0X45,0XBC,0X34,0X3E,0X45,0XFA,0X54,0XFE,0XC6,0XFF,0XF7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XF7, +0X7C,0XA6,0XFB,0X44,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D, +0X5E,0X45,0X5E,0X3D,0XBB,0X7D,0XFF,0XF7,0X9F,0XE7,0X5C,0X65,0X5F,0X45,0X5F,0X3D, +0X5E,0X45,0X5E,0X3D,0X1E,0X3D,0XFC,0X3C,0X9D,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XFB,0X85,0X3D,0X45,0X5B,0X65, +0X7F,0XD7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF7,0X19,0X6D,0X1D,0X45,0X3D,0X3D,0X7B,0X75,0XBF,0XE7,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X3C,0X9E,0X3D,0X3D,0X3E,0X3D, +0X5F,0X45,0X5E,0X3D,0X3D,0X45,0XBB,0X7D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XEF,0X7B,0X6D, +0X7E,0X45,0X3E,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D, +0X7B,0X65,0X9F,0XE7,0X9F,0XE7,0X5C,0X65,0X5F,0X3D,0X5F,0X3D,0X5E,0X45,0X3E,0X45, +0X5E,0X45,0X1D,0X3D,0XBC,0X7D,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9C,0XAE,0XBA,0X4C,0XBC,0X7D,0XDF,0XF7,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFE,0XC6,0XFB,0X4C,0XFB,0X44,0X3C,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0X5E,0XD7,0X39,0X6D,0X5D,0X4D,0X3E,0X3D,0X5F,0X3D,0X5E,0X3D, +0XB9,0X44,0X1E,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5C,0X9E,0XFB,0X44,0X5E,0X45, +0X5F,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X45,0X5F,0X3D,0X7E,0X3D,0X7B,0X65,0X9F,0XDF, +0X9F,0XDF,0X7B,0X65,0X5E,0X3D,0X5E,0X3D,0X5D,0X45,0X3E,0X3D,0X5E,0X45,0X7E,0X45, +0XB9,0X4C,0XFF,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X9F,0XDF,0X36,0X44,0XDE,0XAE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0X7B,0X75, +0X77,0X44,0XBF,0XD7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X3B,0XAE,0X9A,0X6D,0X9D,0X5D,0XFC,0X3C,0X7F,0X3D,0X3D,0X45,0X36,0X4C,0XFF,0XF7, +0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0X9F,0XDF,0X37,0X3C,0X5E,0X45,0X5F,0X3D,0X3E,0X45, +0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5B,0X65,0X9F,0XDF,0X9F,0XDF,0X7B,0X65, +0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0XBA,0X3C,0X5F,0XB7, +0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7, +0X17,0X7D,0XBF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDA,0X9D,0X79,0X85,0XFF,0XF7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XEF,0X58,0X85,0XBD,0XAE, +0X7A,0X6D,0X9E,0X55,0X3E,0X3D,0XDB,0X44,0X1F,0XBF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF7,0XFF,0XB6,0XBB,0X44,0X3E,0X3D,0X3E,0X3D,0X5F,0X45,0X3E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X7B,0X65,0X7F,0XDF,0X9F,0XDF,0X7B,0X65,0X5F,0X3D,0X5E,0X3D, +0X5E,0X45,0X5F,0X3D,0X5F,0X3D,0X5E,0X45,0X3C,0X45,0XF9,0X54,0XFF,0XF7,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5E,0XE7,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBB,0XCE,0X7F,0XDF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XBF,0XDF,0X38,0X7D,0XFA,0X9D,0XBD,0X9E,0X1B,0X4D, +0X3D,0X45,0X7B,0X65,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XDF,0XEF,0XF9,0X5C,0X3D,0X3D,0X5F,0X45,0X5F,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D, +0X5B,0X65,0X9F,0XDF,0X9F,0XDF,0X7B,0X65,0X5F,0X45,0X5E,0X3D,0X3E,0X3D,0X3F,0X3D, +0X5F,0X3D,0X5E,0X45,0X3E,0X45,0XDA,0X44,0XFD,0XC6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF, +0XFF,0XFF,0XD6,0X74,0X5D,0X96,0XBB,0X7D,0XDA,0X8D,0X9C,0X6D,0XFB,0X4C,0X3B,0X9E, +0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5D,0XDF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9D,0XA6, +0XDB,0X44,0X3D,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X45,0X5F,0X3D,0X5B,0X65,0X9F,0XE7, +0XBF,0XE7,0X5B,0X6D,0X3E,0X45,0X7E,0X45,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0XFB,0X44,0X5C,0X9E,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XDE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF, +0XDD,0XBE,0XDF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5E,0XD7,0X53,0X64, +0X9C,0X9E,0X5D,0X96,0X1A,0X96,0X1C,0X8E,0X75,0X54,0X1E,0XD7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XF7,0XBF,0XE7,0X95,0X5C,0XDF,0XDF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDE,0XFF,0X9E,0XDF,0X3A,0X6D,0X3C,0X45, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5B,0X65,0X9F,0XDF,0XFF,0XEF,0XDC,0X7D, +0X1E,0X45,0X7E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5F,0X3D,0X3E,0X3D,0X5D,0X45, +0XBC,0X75,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XF7,0XFF,0XFF,0XDF,0XE7,0XD7,0X64,0XDF,0XEF, +0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XF9,0X9D,0X5E,0XBF,0X5B,0XA6,0XDA,0X8D, +0X9B,0X9E,0X3B,0XA6,0X7F,0XD7,0XFF,0XF7,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF7,0X9C,0XAE,0XD9,0X4C,0X7D,0X9E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XBF,0XDB,0X44,0X5F,0X3D,0X5F,0X3D, +0X5E,0X45,0X5E,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XF7,0XFC,0X85,0X1E,0X45,0X3E,0X3D, +0X5E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5D,0X3D,0X3B,0X55,0XDF,0XEF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X9D,0XA6,0XBA,0X44,0X3B,0XA6,0XFF,0XFF,0XFF,0XFF, +0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XDF,0XF7,0X3A,0XA6,0X1E,0XBF,0XBA,0X8D,0XDA,0X8D,0XDA,0X8D,0XBC,0XC6, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF, +0XBB,0X7D,0X1C,0X4D,0X3B,0X6D,0X9F,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XFA,0X4C,0X3E,0X3D,0X5F,0X3D,0X5E,0X45,0X5F,0X3D, +0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0X3C,0X96,0XFD,0X3C,0X5E,0X3D,0X5E,0X45,0X5E,0X45, +0X3E,0X45,0X3E,0X3D,0X5E,0X3D,0X7E,0X45,0XFB,0X44,0XBE,0XB6,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDE,0XFF, +0XFF,0XEF,0XD9,0X5C,0X1D,0X3D,0X97,0X4C,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XE7, +0X3A,0XA6,0X75,0X5C,0X1B,0X9E,0X5C,0X9E,0X18,0X7D,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XBF,0XE7,0XFC,0X4C,0X3E,0X45, +0XDA,0X44,0X1D,0X8E,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X1C,0X8E,0XDB,0X3C,0X7F,0X45,0X3E,0X3D,0X5E,0X3D,0X5B,0X65,0X9F,0XE7, +0XFF,0XFF,0XBE,0XAE,0XFC,0X44,0X5E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X1D,0X45,0XB7,0X5C,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XC7,0XB9,0X4C, +0X3D,0X45,0XB9,0X3C,0X5F,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XEF,0X17,0X7D,0X3D,0X96,0XDA,0X95, +0X5C,0XA6,0XDA,0X8D,0X1D,0XCF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF, +0XFF,0XFF,0XDE,0XFF,0XFF,0XF7,0XF7,0X74,0XFC,0X44,0X3E,0X45,0X5D,0X45,0XB9,0X4C, +0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XDF, +0X7C,0X6D,0X3E,0X3D,0X3E,0X45,0X5E,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XBE,0XB6, +0XDB,0X4C,0X5D,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X3D,0X45,0X99,0X44,0XBF,0XD7,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3C,0X9E,0X1C,0X45,0X3E,0X45,0X3D,0X45, +0X1C,0X8E,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XDF,0XFF,0XFF,0XFF,0XBF,0XD7,0X76,0X4C,0X5B,0X65,0X9F,0XD7,0XB9,0X8D,0X16,0X7D, +0XFF,0XF7,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XDF,0XDF,0X97,0X4C,0X5D,0X45,0X5E,0X3D,0X5E,0X3D,0XDB,0X3C,0XFE,0XC6,0XFF,0XFF, +0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1C,0X96,0XFD,0X3C, +0X3E,0X45,0X5E,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XE7,0X58,0X44,0X5E,0X45, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5D,0X3D,0X5E,0X3D,0XFC,0X44, +0X3D,0X96,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XBF,0XE7,0X7B,0X6D,0X5E,0X3D,0X5E,0X3D,0X1E,0X3D,0X7B,0X6D,0X9F,0XE7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFB,0X95,0X1B,0X45,0XBD,0X65,0X9B,0X75,0XBA,0X7D,0X3B,0X9E,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0X8D,0X1C,0X3D, +0X5F,0X45,0X3E,0X3D,0X5D,0X3D,0X9A,0X3C,0X9F,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3E,0XCF,0X1B,0X55,0X5F,0X45,0X5E,0X3D,0X5F,0X3D, +0X7B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XE7,0X78,0X4C,0X3D,0X3D,0X7F,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X3D,0X45,0XBB,0X7D,0XFF,0XEF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFE,0XB6, +0X1B,0X4D,0X7E,0X3D,0X5F,0X3D,0X7E,0X45,0XDA,0X4C,0XBD,0XAE,0XFF,0XF7,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XBF,0XE7,0X7B,0X6D,0X3D,0X3D, +0X1C,0X3D,0XBC,0X6D,0X3B,0X96,0X1E,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XD7,0X7B,0X6D,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D, +0X1D,0X45,0X1A,0X5D,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF, +0XFF,0XFF,0XFC,0X7D,0XFB,0X44,0X1E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5B,0X65,0X9F,0XE7, +0XFF,0XFF,0XFF,0XEF,0X7A,0X7D,0X1C,0X45,0X3E,0X35,0X5F,0X3D,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3D,0X45,0X3B,0X65,0X7F,0XD7,0XFF,0XFF,0XFF,0XFF, +0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBC,0X75,0XFC,0X3C,0X3E,0X35, +0X3F,0X3D,0X5D,0X45,0XFC,0X44,0X9B,0X6D,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBD,0XA6,0XDB,0X44,0X5F,0X45,0X3D,0X3D,0X7C,0X55, +0X99,0X85,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XDB,0X85,0XBA,0X44,0X1D,0X3D,0X3E,0X45,0X3F,0X3D,0XDB,0X44,0X5C,0X8E, +0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X79,0X3C, +0X3E,0X45,0X7F,0X45,0X5E,0X3D,0X5F,0X3D,0X7B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF, +0X1E,0XC7,0X1B,0X45,0X3E,0X3D,0X5F,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X5D,0X45,0XDB,0X44,0XFC,0X8D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XBA,0X44,0X3D,0X3D,0X5E,0X3D,0X5E,0X3D,0X1D,0X45, +0X3E,0X3D,0XBA,0X44,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X7B,0X65,0X1C,0X3D,0X3E,0X45,0X5E,0X45,0XDB,0X3C,0XDF,0XAE,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1A,0X5D, +0X3D,0X45,0X5E,0X3D,0X3E,0X3D,0X5E,0X3D,0X5B,0X65,0X5F,0XDF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X7C,0XAE,0XFB,0X44,0X5E,0X3D,0X5F,0X3D, +0X5E,0X3D,0X5F,0X3D,0X7B,0X65,0X9F,0XE7,0XFF,0XFF,0XDF,0XFF,0XDF,0XEF,0X7B,0X5D, +0X5E,0X3D,0X3E,0X3D,0X3E,0X45,0X3E,0X45,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X3D,0X3D, +0X5E,0X45,0X3B,0X5D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7, +0X5F,0XD7,0XBB,0X3C,0X5E,0X3D,0X5F,0X3D,0X5D,0X3D,0X3E,0X45,0X5E,0X3D,0XDB,0X3C, +0X1F,0XBF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X99,0X34, +0X5E,0X45,0X5E,0X45,0X3D,0X3D,0X5D,0X45,0XDB,0X7D,0XFF,0XFF,0XFE,0XFF,0XDE,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1F,0XCF,0X9A,0X44,0X5E,0X3D,0X5F,0X45, +0X3E,0X45,0X1D,0X3D,0X1B,0X86,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X1E,0XC7,0XF9,0X4C,0X7E,0X45,0X1F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D, +0X7B,0X65,0X9F,0XE7,0XDF,0XFF,0XFF,0XFF,0XFF,0XEF,0X1C,0X8E,0X3D,0X45,0X5E,0X45, +0X3D,0X45,0X5E,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X5F,0X3D,0X99,0X3C, +0XBF,0XE7,0XDF,0XFF,0XFF,0XFF,0XFE,0XFF,0XDF,0XFF,0XFF,0XEF,0XFC,0X85,0X3D,0X45, +0X5E,0X3D,0X5E,0X3D,0X3D,0X45,0X5E,0X45,0X5E,0X3D,0X3D,0X45,0X7A,0X75,0XBF,0XE7, +0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0X9D,0XAE,0XDC,0X3C,0X5E,0X3D,0X3D,0X45, +0X5D,0X45,0X3E,0X45,0X5B,0X65,0X9F,0XE7,0XFE,0XFF,0XFE,0XFF,0XDE,0XFF,0XFF,0XFF, +0XFF,0XFF,0XDF,0XEF,0XBC,0X7D,0X3C,0X45,0X3D,0X3D,0X5E,0X3D,0X3D,0X45,0X99,0X3C, +0X7F,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDB,0X85, +0X1C,0X3D,0X3E,0X3D,0X5F,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5B,0X65,0X9F,0XE7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XBE,0XBA,0X44,0X5E,0X45,0X5E,0X45,0X5E,0X45, +0X5F,0X45,0X3E,0X45,0X5E,0X3D,0X3E,0X3D,0X7F,0X3D,0XDC,0X3C,0X3F,0XBF,0XFF,0XF7, +0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0X9F,0XCF,0X5B,0X55,0X5E,0X45,0X3F,0X3D,0X5E,0X3D, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X3D,0X45,0XFA,0X4C,0X1F,0XBF,0XFF,0XF7,0XFF,0XFF, +0XFF,0XF7,0XDF,0XDF,0X9B,0X6D,0X3D,0X45,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D, +0XDB,0X4C,0XFE,0XB6,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XB6, +0XFB,0X44,0X3E,0X3D,0XBE,0X55,0XBA,0X44,0XDC,0X44,0X56,0X54,0XFF,0XF7,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDF,0XE7,0XD9,0X4C,0X3E,0X3D,0X5E,0X3D, +0X3E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5F,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF, +0XDF,0XFF,0XFF,0XF7,0X3D,0X8E,0XFB,0X3C,0X5F,0X3D,0X5E,0X45,0X5F,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X3E,0X3D,0X3C,0X4D,0X7C,0X5D,0X5B,0X55,0X3B,0X5D, +0X5B,0X5D,0X3C,0X55,0X3D,0X45,0X5D,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X5F,0X3D, +0X5F,0X3D,0X5E,0X45,0X3F,0X3D,0X5D,0X4D,0X3A,0X55,0X3C,0X5D,0X3B,0X5D,0X3D,0X55, +0X1C,0X3D,0X5D,0X3D,0X3E,0X3D,0X5E,0X3D,0X3F,0X45,0X7F,0X45,0X5E,0X3D,0XDC,0X3C, +0X7A,0X34,0X79,0X34,0X79,0X3C,0X79,0X34,0X9A,0X3C,0XBB,0X3C,0X5E,0X45,0X1D,0X3D, +0XFD,0X85,0XFF,0XE7,0XD9,0X95,0X7F,0XD7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF7,0XF8,0X64,0X1C,0X45,0X3E,0X3D,0X3E,0X3D,0X5E,0X3D,0X7F,0X3D, +0X5E,0X3D,0X5F,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF, +0XBF,0XDF,0XD9,0X4C,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X3E,0X3D,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5F,0X3D,0X3E,0X3D,0X1E,0X45,0X3D,0X3D,0X1E,0X45,0X1D,0X45,0X1D,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X45, +0X5E,0X3D,0X3E,0X3D,0X1D,0X3D,0X3E,0X3D,0X3D,0X3D,0X3D,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X3E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X5F,0X3D, +0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5D,0X45,0X1D,0X3D,0XDD,0X7D,0XFF,0XF7, +0X9F,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XC6, +0XDB,0X44,0X5E,0X45,0X1E,0X45,0X5D,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5B,0X65,0X9F,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1C,0X8E, +0X1C,0X3D,0X3E,0X3D,0X3E,0X3D,0X7F,0X45,0X5E,0X3D,0X3E,0X3D,0X5E,0X3D,0X3E,0X45, +0X5E,0X3D,0X3E,0X3D,0X3E,0X45,0X3E,0X45,0X3E,0X3D,0X3E,0X3D,0X5F,0X3D,0X5E,0X3D, +0X5E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X3E,0X45,0X3E,0X45,0X3E,0X3D,0X5E,0X3D, +0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D, +0X3E,0X3D,0X5E,0X3D,0X5E,0X3D,0X1E,0X35,0XDD,0X7D,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDE,0XFF,0XFF,0XF7,0XDB,0X7D,0X1D,0X3D,0X3E,0X45, +0X3D,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5B,0X65,0X9F,0XE7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7E,0XD7,0X1A,0X5D,0X3E,0X45, +0X5F,0X3D,0X5E,0X3D,0X3E,0X3D,0X5E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X3E,0X45,0X3E,0X3D,0X5E,0X3D,0X5F,0X3D,0X3E,0X3D,0X5E,0X45,0X3E,0X45, +0X3E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X45,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X45,0X3E,0X45,0X3E,0X45, +0X5E,0X45,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5F,0X3D,0X5F,0X3D,0X3F,0X3D,0X5E,0X3D, +0X5E,0X3D,0X1E,0X3D,0XDC,0X7D,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0X3E,0XD7,0X1A,0X5D,0X1C,0X3D,0X5E,0X45,0X3E,0X45,0X5E,0X45, +0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X7B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDD,0XB6,0XFB,0X4C,0X3D,0X3D,0X3E,0X3D, +0X5E,0X45,0X5E,0X45,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X3E,0X45,0X3E,0X45, +0X3E,0X45,0X5E,0X3D,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X45,0X5E,0X45, +0X5E,0X3D,0X5F,0X3D,0X5E,0X45,0X3E,0X45,0X3E,0X45,0X3D,0X45,0X3D,0X45,0X5E,0X3D, +0X3E,0X45,0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D,0X1D,0X3D, +0XDC,0X85,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XDF,0XF7,0X9F,0XD7,0X9C,0X65,0X3D,0X3D,0X5E,0X3D,0X5E,0X45,0X5F,0X3D,0X5F,0X35, +0X5F,0X3D,0X5F,0X3D,0X7B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0X39,0X65,0X1D,0X3D,0X5F,0X3D,0X3E,0X3D,0X3E,0X45, +0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5F,0X3D, +0X5F,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45, +0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X3E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5F,0X3D, +0X5F,0X3D,0X5F,0X3D,0X3E,0X3D,0X5E,0X45,0X5E,0X3D,0X1D,0X3D,0XDC,0X85,0XFF,0XF7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X3C,0X96, +0XFB,0X3C,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X5F,0X3D,0X5E,0X45,0X5F,0X3D, +0X7B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X3E,0XC7,0X1A,0X55,0X3E,0X3D,0X5F,0X45,0X3F,0X45,0X5E,0X3D,0X5E,0X3D, +0X5F,0X3D,0X3E,0X45,0X3D,0X45,0X3D,0X45,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X45, +0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X3E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D, +0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X45, +0X3E,0X45,0X3E,0X45,0X3E,0X3D,0X1D,0X3D,0XDC,0X7D,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDA,0X8D,0X1C,0X45,0X5F,0X3D,0X5F,0X3D, +0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X3D,0X45,0X5E,0X3D,0X5B,0X65,0X9F,0XE7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XDE,0XB6,0X99,0X44,0X3E,0X45,0X3E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X3D,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45, +0X5E,0X45,0X5E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5E,0X45, +0X3E,0X45,0X1D,0X3D,0XDC,0X7D,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X3E,0XCF,0X59,0X6D,0XFB,0X3C,0X7F,0X3D,0X3E,0X35,0X5F,0X3D,0X5E,0X45,0X5E,0X3D, +0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XEF,0X7D,0XA6, +0XDA,0X54,0X3E,0X45,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X3E,0X45, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X45,0X1D,0X3D, +0XFC,0X85,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X7F,0XD7,0X19,0X5D,0XFB,0X44, +0X3E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X5E,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X9D,0XAE,0XFB,0X4C, +0X5E,0X3D,0X3E,0X35,0X7F,0X3D,0X5F,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45, +0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X1D,0X3D,0XDC,0X7D,0XFF,0XF7, +0XFF,0XFF,0XFF,0XF7,0XBD,0XB6,0X99,0X44,0X3D,0X45,0X1D,0X3D,0X5F,0X45,0X3E,0X45, +0X3D,0X3D,0X5D,0X45,0X5D,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D, +0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XEF,0XDB,0X8D,0XD9,0X4C,0X3D,0X45, +0X5F,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D, +0X3E,0X3D,0X5E,0X3D,0X5F,0X3D,0X1D,0X3D,0XDC,0X7D,0XFF,0XEF,0XFF,0XEF,0X3C,0X9E, +0X1B,0X4D,0X1D,0X3D,0X5F,0X35,0X5F,0X3D,0X3F,0X3D,0X3E,0X45,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5B,0X65,0X9F,0XE7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X3C,0X96,0XDA,0X4C,0X1D,0X3D,0X5E,0X3D, +0X3E,0X3D,0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5E,0X3D, +0X5F,0X3D,0X1D,0X3D,0XDC,0X7D,0XDF,0XE7,0X1C,0X8E,0XDB,0X44,0X3D,0X45,0X5F,0X3D, +0X5F,0X35,0X7F,0X45,0X3E,0X45,0X3D,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5F,0X45, +0X3F,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X1E,0XBF,0XFB,0X54,0XFC,0X44,0X5F,0X45,0X3E,0X3D, +0X3E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X3E,0X45,0X5E,0X3D,0X5F,0X3D,0X3D,0X3D, +0XDD,0X6D,0X3E,0X7E,0XDA,0X44,0X5D,0X45,0X5E,0X3D,0X3D,0X3D,0X5E,0X3D,0X3E,0X45, +0X5D,0X45,0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X3D, +0X5F,0X3D,0X5E,0X3D,0X5B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XDF,0XF7,0XFF,0XFF,0X1E,0XBF,0X1A,0X5D,0XFC,0X3C,0X3E,0X3D,0X5E,0X3D,0X3E,0X45, +0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X7E,0X45,0X3E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X3E,0X45,0X5E,0X45,0X5E,0X45,0X3E,0X3D,0X5E,0X3D,0X3E,0X3D,0X3E,0X3D,0X3E,0X3D, +0X3E,0X3D,0X3E,0X3D,0X5E,0X45,0X3E,0X45,0X5E,0X45,0X3E,0X45,0X5D,0X45,0X5E,0X3D, +0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D, +0X7B,0X65,0X9F,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XEF,0X1B,0X96,0X1B,0X55,0X1D,0X3D,0X5E,0X45,0X3E,0X3D,0X5F,0X3D, +0X3E,0X3D,0X5E,0X45,0X3E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45, +0X5E,0X3D,0X5E,0X45,0X5D,0X45,0X5F,0X3D,0X5F,0X35,0X5E,0X3D,0X5E,0X3D,0X5E,0X45, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D, +0X5E,0X3D,0X5E,0X45,0X5D,0X45,0X5E,0X45,0X5F,0X45,0X7F,0X3D,0X7B,0X65,0X9F,0XE7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XF7,0X3E,0XC7,0X5D,0X96,0X98,0X4C,0X1C,0X45,0X3E,0X3D,0X5F,0X45,0X5E,0X45, +0X3E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X45, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5E,0X45,0X5E,0X45,0X5D,0X45, +0X5D,0X45,0X5E,0X45,0X3F,0X45,0X5E,0X3D,0X7B,0X65,0X9F,0XDF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XF7,0X9F,0XCF,0X7A,0X6D,0XDA,0X44,0X1D,0X45,0X3E,0X45,0X3E,0X45,0X3D,0X3D, +0X5E,0X3D,0X3F,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D, +0X3E,0X45,0X5D,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X3E,0X45,0X5E,0X45, +0X5E,0X3D,0X5E,0X3D,0X5B,0X65,0X9F,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XEF,0X9C,0XB6,0XDC,0X7D,0XFA,0X44,0XFC,0X44,0X1D,0X45,0X3D,0X45,0X5E,0X45, +0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X3E,0X45,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X45, +0X3E,0X45,0X5E,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X3E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5F,0X3D,0X5F,0X3D, +0X7B,0X65,0X9F,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XF7,0XDF,0XDF,0X1B,0X96,0XF8,0X64,0X99,0X44,0XFB,0X44,0X1D,0X3D,0X1D,0X3D, +0X3D,0X45,0X3D,0X45,0X3D,0X45,0X3E,0X45,0X5E,0X45,0X5E,0X3D,0X3E,0X45,0X3E,0X45, +0X3E,0X45,0X3E,0X45,0X3E,0X45,0X3E,0X45,0X5E,0X3D,0X5E,0X3D,0X5E,0X45,0X5E,0X45, +0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5F,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D,0X5E,0X3D, +0X5E,0X3D,0X5E,0X45,0X5E,0X3D,0X5E,0X45,0X5E,0X45,0X5E,0X45,0X5E,0X3D,0X5E,0X3D, +0X5E,0X45,0X5E,0X45,0X3E,0X45,0X3E,0X45,0X5F,0X3D,0X7E,0X3D,0X7B,0X5D,0X9F,0XD7, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XEF,0X7F,0XCF,0XFF,0XB6,0X3D,0X9E,0X1C,0X96,0XBB,0X7D,0X9B,0X75, +0X7B,0X65,0X7B,0X65,0X7B,0X65,0X7B,0X65,0X5C,0X65,0X5C,0X65,0X7C,0X65,0X7C,0X65, +0X7C,0X65,0X5C,0X65,0X7C,0X65,0X7C,0X65,0X5C,0X65,0X7C,0X65,0X7C,0X65,0X7B,0X65, +0X5C,0X65,0X5C,0X65,0X7C,0X65,0X7C,0X65,0X5C,0X65,0X7C,0X65,0X5C,0X65,0X5C,0X65, +0X5B,0X65,0X7C,0X65,0X5C,0X65,0X7C,0X65,0X7C,0X65,0X7B,0X65,0X5B,0X65,0X5B,0X65, +0X5B,0X65,0X5B,0X65,0X7B,0X65,0X5B,0X65,0XBA,0X7D,0X9F,0XDF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDF,0XEF,0X7F,0XDF,0X9F,0XDF, +0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF, +0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0XBF,0XDF,0X9F,0XDF,0X9F,0XDF, +0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF, +0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0X9F,0XDF,0XBF,0XDF, +0X9F,0XDF,0X9F,0XDF,0X9F,0XE7,0XFF,0XFF,}; diff --git a/image.h b/image.h new file mode 100644 index 0000000..954472d --- /dev/null +++ b/image.h @@ -0,0 +1,7 @@ +#ifndef _IMAGE_H_ +#define _IMAGE_H_ +#include +extern PROGMEM const unsigned char gImage_70X70[]; + + +#endif