From d069433024f016c2f009237fd1f8dae22f9b1335 Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Sun, 26 Sep 2021 13:11:29 +0200 Subject: [PATCH 1/5] some font enhancements, better utf8 handling, most things not yet active in main build --- RX_FSK/RX_FSK.ino | 15 + RX_FSK/features.h | 13 + RX_FSK/src/Display.cpp | 253 ++++--- RX_FSK/src/fonts/FreeMono12pt8b.h | 495 ++++++++++++++ RX_FSK/src/fonts/FreeMono9pt8b.h | 374 +++++++++++ RX_FSK/src/fonts/FreeSans12pt8b.h | 596 +++++++++++++++++ RX_FSK/src/fonts/FreeSans18pt8b.h | 1030 +++++++++++++++++++++++++++++ RX_FSK/src/fonts/FreeSans9pt8b.h | 421 ++++++++++++ RX_FSK/src/fonts/fonts.cpp | 25 + RX_FSK/src/fonts/gfxfont.h | 31 + fontlink.ld | 6 + platformio.ini | 18 +- scripts/makefontpartition.py | 15 + scripts/uploadfonts.py | 33 + 14 files changed, 3231 insertions(+), 94 deletions(-) create mode 100644 RX_FSK/src/fonts/FreeMono12pt8b.h create mode 100644 RX_FSK/src/fonts/FreeMono9pt8b.h create mode 100644 RX_FSK/src/fonts/FreeSans12pt8b.h create mode 100644 RX_FSK/src/fonts/FreeSans18pt8b.h create mode 100644 RX_FSK/src/fonts/FreeSans9pt8b.h create mode 100644 RX_FSK/src/fonts/fonts.cpp create mode 100644 RX_FSK/src/fonts/gfxfont.h create mode 100644 fontlink.ld create mode 100755 scripts/makefontpartition.py create mode 100755 scripts/uploadfonts.py diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index 64d5c72..a9b5e4c 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -1742,6 +1742,21 @@ void initGPS() { if (testfile && !testfile.isDirectory()) { testfile.close(); Serial.println("GPS resetting baud to 9k6..."); + /* TODO: debug: + * Sometimes I have seen the Serial2.begin to cause a reset + * Guru Meditation Error: Core 1 panic'ed (Interrupt wdt timeout on CPU1) + * Backtrace: 0x40081d2f:0x3ffc11b0 0x40087969:0x3ffc11e0 0x4000bfed:0x3ffb1db0 0x4008b7dd:0x3ffb1dc0 0x4017afee:0x3ffb1de0 0x4017b04b:0x3ffb1e20 0x4010722b:0x3ffb1e50 0x40107303:0x3ffb1e70 0x4010782d:0x3ffb1e90 0x40103814:0x3ffb1ed0 0x400d8772:0x3ffb1f10 0x400d9057:0x3ffb1f60 0x40107aca:0x3ffb1fb0 0x4008a63e:0x3ffb1fd0 + * #0 0x40081d2f:0x3ffc11b0 in _uart_isr at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:464 + * #1 0x40087969:0x3ffc11e0 in _xt_lowint1 at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/xtensa_vectors.S:1154 + * #2 0x4000bfed:0x3ffb1db0 in ?? ??:0 + * #3 0x4008b7dd:0x3ffb1dc0 in vTaskExitCritical at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c:3507 + * #4 0x4017afee:0x3ffb1de0 in esp_intr_alloc_intrstatus at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/intr_alloc.c:784 + * #5 0x4017b04b:0x3ffb1e20 in esp_intr_alloc at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/intr_alloc.c:784 + * #6 0x4010722b:0x3ffb1e50 in uartEnableInterrupt at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:464 + * #7 0x40107303:0x3ffb1e70 in uartAttachRx at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:464 + * #8 0x4010782d:0x3ffb1e90 in uartBegin at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:464 + * #9 0x40103814:0x3ffb1ed0 in HardwareSerial::begin(unsigned long, unsigned int, signed char, signed char, bool, unsigned long) at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.cpp:190 + */ Serial2.begin(115200, SERIAL_8N1, sonde.config.gps_rxd, sonde.config.gps_txd); Serial2.write(ubx_set9k6, sizeof(ubx_set9k6)); delay(200); diff --git a/RX_FSK/features.h b/RX_FSK/features.h index 60341cf..b2609ec 100644 --- a/RX_FSK/features.h +++ b/RX_FSK/features.h @@ -10,3 +10,16 @@ #define FEATURE_RS92 1 +/* Most recent version support fonts in a dedicated flash parition "fonts". + * This is incomabtible (in terms of code and flash layout) to previous versions. + * If LEGACY_FONTS_IN_CODEBIN is sets, fonts are also included in the bin image. + * This maintains compatibility for OTA with previous versions (in which case the + * bin image fonts will be used as before). + * The code automatically uses fonts in flash partition if that exists, otherwise + * fonts in code. + * The flash partition fonts support latin15 codeset (instead of 7bit ascii). + * Also, it is easier to use different fonts :) just flash the font partition w/ something else... + * This option will likely be removed post-master1.0 + */ +#define LEGACY_FONTS_IN_CODEBIN 1 + diff --git a/RX_FSK/src/Display.cpp b/RX_FSK/src/Display.cpp index d014218..0be9a47 100644 --- a/RX_FSK/src/Display.cpp +++ b/RX_FSK/src/Display.cpp @@ -192,6 +192,55 @@ DispInfo staticLayouts[5] = { /////////////// Wrapper code for various display +static void utf2latin15(const char *src, char *dst, int dstlen) { + static uint8_t decoderState = 0; + static uint16_t decoderBuffer; + + while(uint8_t c = *src++) { + if( (c&0x80)==0 || c==0xB0) { // 7bit code point (or special case: old °sign) + decoderState = 0; + *dst++ = c; + continue; + } + if(decoderState==0) { + if((c&0xE0)==0xC0) { // 11bit code point + decoderBuffer = ((c&0x1F)<<6); // first 5 bit + decoderState = 1; + } else if ((c&0xF0)==0xE0) { // 16 bit code point + decoderBuffer = ((c&0x0f)<<12); // first 4 bit + decoderState = 2; + } + } else { + decoderState --; + if(decoderState == 1) + decoderBuffer |= ((c&0x3f)<<6); // next 6 bit of 16 bit code point + else if (decoderState==0) { + decoderBuffer |= (c&0x3f); // last 6 bit of code point$a + } + } + if(decoderState==0) { + // emit encoded byte if possible + switch(decoderBuffer) { + case 0x0152: decoderBuffer=0xbc; break; + case 0x0153: decoderBuffer=0xbd; break; + case 0x0160: decoderBuffer=0xa6; break; + case 0x0161: decoderBuffer=0xa8; break; + case 0x0178: decoderBuffer=0xbe; break; + case 0x017D: decoderBuffer=0xb4; break; + case 0x017E: decoderBuffer=0xb8; break; + case 0x20AC: decoderBuffer=0xa4; break; + } + + if(decoderBuffer>0xff) decoderBuffer=0x7f; + else if(decoderBuffer>0x7f) decoderBuffer-=0x20; + *dst++ = (uint8_t)decoderBuffer; + } + + } + *dst = 0; +} + + // ALLFONTS requires 30k extra flash memory... for now there is still enough space :) //#define ALLFONTS 1 static const uint8_t *fl[] = { @@ -254,7 +303,9 @@ void U8x8Display::getDispSize(uint8_t *height, uint8_t *width, uint8_t *lineskip } void U8x8Display::drawString(uint16_t x, uint16_t y, const char *s, int16_t width, uint16_t fg, uint16_t bg) { - u8x8->drawString(x, y, s); + char buf[50]; + utf2latin15(s, buf, 50); + u8x8->drawString(x, y, buf); } void U8x8Display::drawTile(uint16_t x, uint16_t y, uint8_t cnt, uint8_t *tile_ptr) { @@ -316,7 +367,10 @@ void U8x8Display::drawQS(uint16_t x, uint16_t y, uint8_t len, uint8_t /*size*/, } -const GFXfont *gfl[] = { +#ifdef LEGACY_FONTS_IN_CODEBIN +const GFXfont *legacygfl[] = { + &Terminal11x16Font, // 1 (replacement for 1 with old library) + &Terminal11x16Font, // 2 (replacement for 2 with old library) &Terminal11x16Font, // 3 (replacement for 1 or 2 with old library) &Terminal11x16Font, // 4 (replacement for 1 or 2 with old library) &FreeSans9pt7b, // 5 @@ -324,9 +378,69 @@ const GFXfont *gfl[] = { &Picopixel, // 7 &FreeSans18pt7b, // 8 }; + +const GFXfont **gfl = legacygfl; +static int ngfx = sizeof(legacygfl)/sizeof(GFXfont *); +#else +// will crash if no font partition exists........ +const GFXdont **gfl = NULL; +#endif + + +#define MAXFONT 20 + +static void init_gfx_fonts() { + // if we have a fonts partition, relocate and use that... + const esp_partition_t *part; + spi_flash_mmap_handle_t handle; + void *data; + esp_err_t err; + + part = esp_partition_find_first((esp_partition_type_t)0x40, ESP_PARTITION_SUBTYPE_APP_FACTORY, "fonts"); + if(part) { + Serial.println("FONT partition found!"); + err = esp_partition_mmap(part, 0, part->size, SPI_FLASH_MMAP_DATA, (const void **)&data, &handle); + if( err != ESP_OK ) { + Serial.println("mmap not OK\n"); + return; + } + Serial.println("font partition successfully mmaped"); + // do relocation stuff.... + const GFXfont **fptr = (const GFXfont **)data; + if((uint32_t)*fptr != 0x544E4F46) { // FONT + Serial.println("No font data in font partition"); + return; + } + int n=0; + for(const GFXfont **g=fptr; *g!=NULL; g++) n++; + Serial.printf("There a %d fonts in the font partition\n", n); + if(n>MAXFONT) n=MAXFONT; + GFXfont **newgfl = (GFXfont **)malloc( n*sizeof(GFXfont) + MAXFONT*sizeof(GFXfont *) ); + if(!newgfl) { + Serial.println("no memory for gfx fonts"); + return; + } + GFXfont *fonts = (GFXfont *)(((char *)newgfl) + MAXFONT*sizeof(GFXfont *)); + // create GFXfont list + for(int i=0; ibitmap = newgfl[i]->bitmap + (uint32_t)data; // relocate bitmap pointer to mmap partition + newgfl[i]->glyph = (GFXglyph *)( ((char *)newgfl[i]->glyph) + (uint32_t)data ); + Serial.printf("font i: gfl[i] is %p, gfl[i]->bitmap is %p, gfl[i]->glyph is %p\n", newgfl[i], newgfl[i]->bitmap, newgfl[i]->glyph); + } + gfl = (const GFXfont **)newgfl; + ngfx = n; + } +} + struct gfxoffset_t { uint8_t yofs, yclear; }; +#if 0 +///// **** this is now calculated automatically +// // obtained as max offset from font (last column) and maximum height (3rd column) in glyphs // first value: offset: max offset from font glyphs (last column * (-1)) (check /, \, `, $)` // yclear:max height: max of (height in 3rd column) + (yofs + 6th column) (check j) @@ -338,8 +452,29 @@ const struct gfxoffset_t gfxoffsets[]={ { 4, 6}, // 6+4-4 { 25, 34 }, // 34 25 -25 }; -static int ngfx = sizeof(gfl)/sizeof(GFXfont *); +#endif +struct gfxoffset_t gfxoffsets[MAXFONT]; + +void calc_gfx_offsets() { + for(int i=0; iglyph; + for(int j=0; j<=gfl[i]->last-gfl[i]->first; j++) { + if(g[j].yOffset < bofs) bofs = g[j].yOffset; // yOffset are negative values + } + gfxoffsets[i].yofs = -bofs; + // find max. height (yofs + yOffset + height) -- note that yOffset is negative + int hgt = 0; + for(int j=0; j<=gfl[i]->last-gfl[i]->first; j++) { + int h = gfxoffsets[i].yofs + g[j].yOffset + g[j].height; + if(h>hgt) hgt=h; + } + gfxoffsets[i].yclear = hgt; + printf("Font %d: yofs=%d, yclear=%d\n", i, gfxoffsets[i].yofs, gfxoffsets[i].yclear); + } +} #define TFT_LED 0 // 0 if wired to +5V directly #define TFT_BRIGHTNESS 100 // Initial brightness of TFT backlight (optional) @@ -348,6 +483,8 @@ Arduino_DataBus *bus; void ILI9225Display::begin() { Serial.println("ILI9225/ILI9341 init"); + init_gfx_fonts(); + calc_gfx_offsets(); // On the M5, the display and the Lora chip are on the same SPI interface (VSPI default pins), // we must use the same SPI bus with correct locking if(sonde.config.type == TYPE_M5_CORE2) { @@ -380,13 +517,13 @@ void ILI9225Display::clear() { // for now, 0=small=FreeSans9pt7b, 1=large=FreeSans18pt7b void ILI9225Display::setFont(uint8_t fontindex) { - if(fontindex==1 || fontindex==2) { fontindex=3; } + //if(fontindex==1 || fontindex==2) { fontindex=3; } findex = fontindex; switch(fontindex) { case 0: tft->setFont(NULL); tft->setTextSize(1); break; - case 1: tft->setFont(NULL); tft->setTextSize(2); break; - case 2: tft->setFont(NULL); tft->setTextSize(2); break; - default: tft->setFont(gfl[fontindex-3]); + //case 1: tft->setFont(NULL); tft->setTextSize(2); break; + //case 2: tft->setFont(NULL); tft->setTextSize(2); break; + default: tft->setFont(gfl[fontindex-1]); } } @@ -419,23 +556,27 @@ void ILI9225Display::getDispSize(uint8_t *height, uint8_t *width, uint8_t *lines } } + + // Note: alignright means that there is a box from x to x+(-width), with text right-justified // x is the *left* corner! not the right... void ILI9225Display::drawString(uint16_t x, uint16_t y, const char *s, int16_t width, uint16_t fg, uint16_t bg) { int16_t w,h; boolean alignright=false; + char buf[50]; + utf2latin15(s, buf, 50); + if(width<0) { width = -width; alignright = true; } // Standard font - if(findex<3) { + if(findex==0) { SPI_MUTEX_LOCK(); DebugPrintf(DEBUG_DISPLAY, "Simple Text %s at %d,%d [%d]\n", s, x, y, width); // for gpx fonts and new library, cursor is at baseline!! - int h = 6; if(findex>1) h=12; + int h = 6; if( alignright ) { -#if 1 //w = tft->getTextWidth(s); /// TODO if( width==WIDTH_AUTO ) { width = w; } @@ -444,25 +585,11 @@ void ILI9225Display::drawString(uint16_t x, uint16_t y, const char *s, int16_t w } tft->setCursor(x + width - w, y); tft->setTextColor(fg, bg); - tft->print(s); -#else - w = tft->getTextWidth(s); - if( width==WIDTH_AUTO ) { width = w; } - if( width > w ) { - tft->fillRectangle(x, y, x + width - w, y + h - 1, bg); - } - tft->drawText(x + width - w, y, s, fg); -#endif + tft->print(buf); } else { tft->setCursor(x, y); tft->setTextColor(fg, bg); - tft->print(s); - // curx??? - //i//int curx = tft->drawText(x, y, s, fg); - //if( width==WIDTH_AUTO ) { return; } - //if(curx < x + width) { - // tft->fillRectangle(curx, y, x + width - 1, y + h - 1, bg); - //} + tft->print(buf); } SPI_MUTEX_UNLOCK(); return; @@ -471,7 +598,7 @@ void ILI9225Display::drawString(uint16_t x, uint16_t y, const char *s, int16_t w SPI_MUTEX_LOCK(); int16_t x1, y1; if(1||width==WIDTH_AUTO || alignright) { - tft->getTextBounds(s, x, y + gfxoffsets[findex-3].yofs, &x1, &y1, (uint16_t *)&w, (uint16_t *)&h); + tft->getTextBounds(buf, x, y + gfxoffsets[findex-1].yofs, &x1, &y1, (uint16_t *)&w, (uint16_t *)&h); w += x1 - x + 1; if(width==WIDTH_AUTO) { width=w; } if(alignright) { @@ -486,24 +613,24 @@ void ILI9225Display::drawString(uint16_t x, uint16_t y, const char *s, int16_t w } } - if(findex-3>=ngfx) findex=3; - DebugPrintf(DEBUG_DISPLAY,"GFX Text %s at %d,%d+%d in color %x, width=%d (w=%d)\n", s, x, y, gfxoffsets[findex-3].yofs, fg, width, w); + if(findex-1>=ngfx) findex=1; + DebugPrintf(DEBUG_DISPLAY,"GFX Text %s at %d,%d+%d in color %x, width=%d (w=%d)\n", s, x, y, gfxoffsets[findex-1].yofs, fg, width, w); #if 0 // Text by clear rectangle and refill, causes some flicker - tft->fillRectangle(x, y, x + width, y + gfxoffsets[findex-3].yclear, bg); + tft->fillRectangle(x, y, x + width, y + gfxoffsets[findex-1].yclear, bg); if(alignright) { - tft->drawGFXText(x + width - w, y + gfxoffsets[findex-3].yofs, s, fg); + tft->drawGFXText(x + width - w, y + gfxoffsets[findex-1].yofs, s, fg); } else { - tft->drawGFXText(x, y + gfxoffsets[findex-3].yofs, s, fg); + tft->drawGFXText(x, y + gfxoffsets[findex-1].yofs, s, fg); } #else // Text by drawing bitmap.... => less "flicker" #if 1 //TODO - tft->setCursor( alignright? x+width-w : x, y + gfxoffsets[findex-3].yofs); + tft->setCursor( alignright? x+width-w : x, y + gfxoffsets[findex-1].yofs); tft->setTextColor( fg, bg ); - tft->print(s); - uint16_t height = gfxoffsets[findex-3].yclear; + tft->print(buf); + uint16_t height = gfxoffsets[findex-1].yclear; if(alignright) { // fill with bg from x+w to width if(width>w) tft->fillRect( x, y, width-w, height, bg); @@ -514,7 +641,7 @@ void ILI9225Display::drawString(uint16_t x, uint16_t y, const char *s, int16_t w DebugPrintf(DEBUG_DISPLAY,"ltext fill %d %d %d %d -- %d %d\n", x+w, y, width-w, height, x1, y1); } #else - uint16_t height = gfxoffsets[findex-3].yclear; + uint16_t height = gfxoffsets[findex-1].yclear; uint16_t *bitmap = (uint16_t *)malloc(sizeof(uint16_t) * width * height); if(!bitmap) { Serial.println("FATAL: OUT OF MEMORY when allocating bitmap"); @@ -525,7 +652,7 @@ void ILI9225Display::drawString(uint16_t x, uint16_t y, const char *s, int16_t w for(int i=0; idrawGFXcharBM(x0, y0, s[k], fg, bitmap, width, height) + 1; @@ -620,58 +747,6 @@ void ILI9225Display::drawQS(uint16_t x, uint16_t y, uint8_t len, uint8_t size, u #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr)) -#if 1 -#else -// TO BE REMOVED -void MY_ILI9225::drawTile(uint16_t x, uint16_t y, uint8_t cnt, uint8_t *tile_ptr) { - int i,j; - startWrite(); - for(i=0; i>= 1; - } - } - endWrite(); -} - - -uint16_t MY_ILI9225::drawGFXChar(int16_t x, int16_t y, unsigned char c, uint16_t color) { - - c -= (uint8_t)pgm_read_byte(&gfxFont->first); - GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); - uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); - - uint16_t bo = pgm_read_word(&glyph->bitmapOffset); - uint8_t w = pgm_read_byte(&glyph->width), - h = pgm_read_byte(&glyph->height), - xa = pgm_read_byte(&glyph->xAdvance); - int8_t xo = pgm_read_byte(&glyph->xOffset), - yo = pgm_read_byte(&glyph->yOffset); - uint8_t xx, yy, bits = 0, bit = 0; - - // Add character clipping here one day - - startWrite(); - for(yy=0; yy' U+003E + { 386, 9, 14, 14, 3, -13 }, // 0x3f '?' U+003F + { 402, 8, 16, 14, 3, -14 }, // 0x40 '@' U+0040 + { 418, 14, 14, 14, 0, -13 }, // 0x41 'A' U+0041 + { 443, 12, 14, 14, 1, -13 }, // 0x42 'B' U+0042 + { 464, 11, 14, 14, 2, -13 }, // 0x43 'C' U+0043 + { 484, 11, 14, 14, 1, -13 }, // 0x44 'D' U+0044 + { 504, 11, 14, 14, 1, -13 }, // 0x45 'E' U+0045 + { 524, 11, 14, 14, 1, -13 }, // 0x46 'F' U+0046 + { 544, 11, 14, 14, 2, -13 }, // 0x47 'G' U+0047 + { 564, 12, 14, 14, 1, -13 }, // 0x48 'H' U+0048 + { 585, 9, 14, 14, 3, -13 }, // 0x49 'I' U+0049 + { 601, 12, 14, 14, 2, -13 }, // 0x4a 'J' U+004A + { 622, 13, 14, 14, 1, -13 }, // 0x4b 'K' U+004B + { 645, 11, 14, 14, 2, -13 }, // 0x4c 'L' U+004C + { 665, 14, 14, 14, 0, -13 }, // 0x4d 'M' U+004D + { 690, 12, 14, 14, 1, -13 }, // 0x4e 'N' U+004E + { 711, 12, 14, 14, 1, -13 }, // 0x4f 'O' U+004F + { 732, 11, 14, 14, 1, -13 }, // 0x50 'P' U+0050 + { 752, 12, 17, 14, 1, -13 }, // 0x51 'Q' U+0051 + { 778, 13, 14, 14, 1, -13 }, // 0x52 'R' U+0052 + { 801, 10, 14, 14, 2, -13 }, // 0x53 'S' U+0053 + { 819, 11, 14, 14, 2, -13 }, // 0x54 'T' U+0054 + { 839, 12, 14, 14, 1, -13 }, // 0x55 'U' U+0055 + { 860, 14, 14, 14, 0, -13 }, // 0x56 'V' U+0056 + { 885, 14, 14, 14, 0, -13 }, // 0x57 'W' U+0057 + { 910, 12, 14, 14, 1, -13 }, // 0x58 'X' U+0058 + { 931, 12, 14, 14, 1, -13 }, // 0x59 'Y' U+0059 + { 952, 10, 14, 14, 2, -13 }, // 0x5a 'Z' U+005A + { 970, 4, 18, 14, 7, -14 }, // 0x5b '[' U+005B + { 979, 9, 18, 14, 3, -15 }, // 0x5c '\' U+005C + { 1000, 4, 18, 14, 4, -14 }, // 0x5d ']' U+005D + { 1009, 9, 7, 14, 3, -14 }, // 0x5e '^' U+005E + { 1017, 14, 1, 14, 0, 3 }, // 0x5f '_' U+005F + { 1019, 4, 3, 14, 4, -14 }, // 0x60 '`' U+0060 + { 1021, 11, 10, 14, 2, -9 }, // 0x61 'a' U+0061 + { 1035, 12, 15, 14, 1, -14 }, // 0x62 'b' U+0062 + { 1058, 11, 10, 14, 2, -9 }, // 0x63 'c' U+0063 + { 1072, 12, 15, 14, 2, -14 }, // 0x64 'd' U+0064 + { 1095, 10, 10, 14, 2, -9 }, // 0x65 'e' U+0065 + { 1108, 10, 15, 14, 3, -14 }, // 0x66 'f' U+0066 + { 1127, 11, 14, 14, 2, -9 }, // 0x67 'g' U+0067 + { 1147, 12, 15, 14, 1, -14 }, // 0x68 'h' U+0068 + { 1170, 10, 15, 14, 2, -14 }, // 0x69 'i' U+0069 + { 1189, 7, 19, 14, 4, -14 }, // 0x6a 'j' U+006A + { 1206, 11, 15, 14, 2, -14 }, // 0x6b 'k' U+006B + { 1227, 10, 15, 14, 2, -14 }, // 0x6c 'l' U+006C + { 1246, 14, 10, 14, 0, -9 }, // 0x6d 'm' U+006D + { 1264, 12, 10, 14, 1, -9 }, // 0x6e 'n' U+006E + { 1279, 11, 10, 14, 2, -9 }, // 0x6f 'o' U+006F + { 1293, 12, 14, 14, 1, -9 }, // 0x70 'p' U+0070 + { 1314, 12, 14, 14, 2, -9 }, // 0x71 'q' U+0071 + { 1335, 11, 10, 14, 2, -9 }, // 0x72 'r' U+0072 + { 1349, 10, 10, 14, 2, -9 }, // 0x73 's' U+0073 + { 1362, 11, 14, 14, 1, -13 }, // 0x74 't' U+0074 + { 1382, 12, 10, 14, 1, -9 }, // 0x75 'u' U+0075 + { 1397, 13, 10, 14, 1, -9 }, // 0x76 'v' U+0076 + { 1414, 13, 10, 14, 1, -9 }, // 0x77 'w' U+0077 + { 1431, 12, 10, 14, 1, -9 }, // 0x78 'x' U+0078 + { 1446, 12, 14, 14, 1, -9 }, // 0x79 'y' U+0079 + { 1467, 9, 10, 14, 3, -9 }, // 0x7a 'z' U+007A + { 1479, 6, 18, 14, 4, -14 }, // 0x7b '{' U+007B + { 1493, 1, 18, 14, 7, -14 }, // 0x7c '|' U+007C + { 1496, 6, 18, 14, 5, -14 }, // 0x7d '}' U+007D + { 1510, 10, 3, 14, 2, -7 }, // 0x7e '~' U+007E + { 1514, 14, 19, 14, 0, -16 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 1548, 1, 1, 14, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 1549, 3, 15, 14, 6, -10 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 1555, 8, 15, 14, 3, -14 }, // 0x82 'CENT SIGN' U+00A2 + { 1570, 10, 14, 14, 2, -13 }, // 0x83 'POUND SIGN' U+00A3 + { 1588, 12, 14, 14, 1, -13 }, // 0x84 'EURO SIGN *' U+20AC + { 1609, 12, 14, 14, 1, -13 }, // 0x85 'YEN SIGN' U+00A5 + { 1630, 10, 18, 14, 2, -17 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 1653, 11, 15, 14, 2, -13 }, // 0x87 'SECTION SIGN' U+00A7 + { 1674, 10, 15, 14, 2, -14 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 1693, 14, 14, 14, 0, -13 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 1718, 7, 7, 14, 4, -13 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 1725, 11, 10, 14, 2, -9 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 1739, 11, 7, 14, 2, -10 }, // 0x8c 'NOT SIGN' U+00AC + { 1749, 11, 1, 14, 2, -6 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 1751, 14, 14, 14, 0, -13 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 1776, 7, 1, 14, 4, -13 }, // 0x8f 'MACRON' U+00AF + { 1777, 7, 7, 14, 4, -14 }, // 0x90 'DEGREE SIGN' U+00B0 + { 1784, 11, 13, 14, 2, -12 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 1802, 6, 9, 14, 4, -14 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 1809, 6, 9, 14, 4, -14 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 1816, 10, 18, 14, 2, -17 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 1839, 12, 15, 14, 1, -9 }, // 0x95 'MICRO SIGN' U+00B5 + { 1862, 11, 16, 14, 2, -14 }, // 0x96 'PILCROW SIGN' U+00B6 + { 1884, 2, 3, 14, 6, -6 }, // 0x97 'MIDDLE DOT' U+00B7 + { 1885, 9, 15, 14, 3, -14 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 1902, 5, 9, 14, 5, -14 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 1908, 7, 7, 14, 4, -13 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 1915, 11, 10, 14, 2, -9 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 1929, 14, 14, 14, 0, -13 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 1954, 14, 10, 14, 0, -9 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 1972, 12, 17, 14, 1, -16 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 1998, 8, 14, 14, 3, -9 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 2012, 14, 19, 14, 0, -18 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 2046, 14, 19, 14, 0, -18 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 2080, 14, 18, 14, 0, -17 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 2112, 14, 17, 14, 0, -16 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 2142, 14, 17, 14, 0, -16 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 2172, 14, 19, 14, 0, -18 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 2206, 14, 14, 14, 0, -13 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 2231, 11, 18, 14, 2, -13 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 2256, 11, 19, 14, 1, -18 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 2283, 11, 19, 14, 1, -18 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 2310, 11, 18, 14, 1, -17 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 2335, 11, 17, 14, 1, -16 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 2359, 9, 19, 14, 3, -18 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 2381, 9, 19, 14, 3, -18 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 2403, 9, 18, 14, 3, -17 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 2424, 9, 17, 14, 3, -16 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 2444, 12, 14, 14, 0, -13 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 2465, 12, 17, 14, 1, -16 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 2491, 12, 19, 14, 1, -18 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 2520, 12, 19, 14, 1, -18 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 2549, 12, 18, 14, 1, -17 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 2576, 12, 17, 14, 1, -16 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 2602, 12, 17, 14, 1, -16 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 2628, 9, 9, 14, 3, -10 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 2639, 12, 16, 14, 1, -14 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 2663, 12, 19, 14, 1, -18 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 2692, 12, 19, 14, 1, -18 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 2721, 12, 18, 14, 1, -17 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 2748, 12, 17, 14, 1, -16 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 2774, 12, 19, 14, 1, -18 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 2803, 11, 14, 14, 1, -13 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 2823, 11, 15, 14, 1, -14 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 2844, 11, 15, 14, 2, -14 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 2865, 11, 15, 14, 2, -14 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 2886, 11, 15, 14, 2, -14 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 2907, 11, 14, 14, 2, -13 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 2927, 11, 14, 14, 2, -13 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 2947, 11, 16, 14, 2, -15 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 2969, 14, 10, 14, 0, -9 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 2987, 11, 14, 14, 2, -9 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 3007, 10, 15, 14, 2, -14 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 3026, 10, 15, 14, 2, -14 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 3045, 10, 15, 14, 2, -14 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 3064, 10, 14, 14, 2, -13 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 3082, 10, 15, 14, 2, -14 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 3101, 10, 15, 14, 2, -14 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 3120, 10, 15, 14, 2, -14 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 3139, 10, 14, 14, 2, -13 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 3157, 11, 15, 14, 2, -14 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 3178, 12, 14, 14, 1, -13 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 3199, 11, 15, 14, 2, -14 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 3220, 11, 15, 14, 2, -14 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 3241, 11, 15, 14, 2, -14 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 3262, 11, 14, 14, 2, -13 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 3282, 11, 14, 14, 2, -13 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 3302, 11, 12, 14, 2, -12 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 3319, 12, 12, 14, 1, -10 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 3337, 12, 15, 14, 1, -14 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 3360, 12, 15, 14, 1, -14 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 3383, 12, 15, 14, 1, -14 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 3406, 12, 14, 14, 1, -13 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 3427, 12, 19, 14, 1, -14 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 3456, 12, 18, 14, 1, -13 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 3483, 12, 18, 14, 1, -13 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeMono12pt8b PROGMEM = { + (uint8_t *)FreeMono12pt8bBitmaps, + (GFXglyph *)FreeMono12pt8bGlyphs, + 0x20, 0xDF, 26 }; + +// Approx. 4861 bytes diff --git a/RX_FSK/src/fonts/FreeMono9pt8b.h b/RX_FSK/src/fonts/FreeMono9pt8b.h new file mode 100644 index 0000000..870cc1c --- /dev/null +++ b/RX_FSK/src/fonts/FreeMono9pt8b.h @@ -0,0 +1,374 @@ +const uint8_t FreeMono9pt8bBitmaps[] PROGMEM = { + 0x00, 0x55, 0x54, 0x1C, 0xDE, 0xF7, 0x39, 0x80, 0x20, 0x50, 0xA1, 0x42, + 0x9F, 0xCA, 0x14, 0xFE, 0x91, 0x22, 0x44, 0x80, 0x10, 0x21, 0xB4, 0x08, + 0x08, 0x0F, 0x01, 0x83, 0x0B, 0xE0, 0x81, 0x02, 0x00, 0x71, 0x22, 0x44, + 0x86, 0x23, 0xB8, 0x0E, 0x22, 0x44, 0x70, 0x78, 0x81, 0x02, 0x06, 0x12, + 0xA6, 0x44, 0x76, 0xD9, 0x24, 0x25, 0x25, 0x24, 0x49, 0x12, 0x91, 0x24, + 0x9B, 0x49, 0x48, 0x10, 0x22, 0x4B, 0xE2, 0x89, 0x00, 0x00, 0x08, 0x04, + 0x02, 0x01, 0x00, 0x83, 0xF8, 0x20, 0x10, 0x08, 0x00, 0x37, 0x64, 0x40, + 0x7F, 0x00, 0xFC, 0x02, 0x08, 0x10, 0x40, 0x82, 0x04, 0x10, 0x20, 0x41, + 0x02, 0x08, 0x00, 0x38, 0x8A, 0x14, 0x18, 0x30, 0x60, 0xC1, 0x82, 0x89, + 0xE0, 0x30, 0xA2, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, 0xF8, 0x79, + 0x0A, 0x10, 0x20, 0x41, 0x04, 0x10, 0x41, 0x07, 0xF8, 0x79, 0x08, 0x08, + 0x20, 0xC3, 0x80, 0x81, 0x02, 0x07, 0xF0, 0x0C, 0x28, 0x91, 0x24, 0x48, + 0xA1, 0x7F, 0x04, 0x08, 0x78, 0x7D, 0x02, 0x04, 0x07, 0xC0, 0x40, 0x81, + 0x03, 0x09, 0xF0, 0x1E, 0x41, 0x02, 0x08, 0x96, 0xB0, 0xC1, 0x42, 0x84, + 0xF0, 0xFF, 0x04, 0x10, 0x20, 0x41, 0x02, 0x04, 0x10, 0x20, 0x40, 0x79, + 0x0A, 0x0C, 0x14, 0x47, 0x31, 0x41, 0x83, 0x09, 0xF0, 0x38, 0x8A, 0x0C, + 0x18, 0x28, 0xCE, 0x81, 0x04, 0x09, 0xE0, 0x1F, 0x00, 0x3F, 0x03, 0x30, + 0x03, 0x76, 0x44, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, + 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, + 0xC0, 0x80, 0xFD, 0x04, 0x08, 0x10, 0xC2, 0x04, 0x00, 0x10, 0x70, 0x78, + 0x8A, 0x14, 0x29, 0xD4, 0xA9, 0x4A, 0x89, 0x01, 0x01, 0xE0, 0x3C, 0x01, + 0x40, 0x48, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, + 0xFE, 0x20, 0x90, 0x48, 0x27, 0xE2, 0x09, 0x02, 0x81, 0x41, 0x7F, 0x00, + 0x3F, 0x20, 0xA0, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x41, 0x1F, 0x00, + 0xFC, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0xFC, 0xFF, 0x41, + 0x41, 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, 0xFF, 0x41, 0x40, 0x40, + 0x78, 0x48, 0x40, 0x40, 0x40, 0xF8, 0x3F, 0x20, 0xA0, 0x10, 0x08, 0x04, + 0x3E, 0x05, 0x02, 0x41, 0x1F, 0x80, 0xE3, 0x20, 0x90, 0x48, 0x27, 0xF2, + 0x09, 0x04, 0x82, 0x41, 0x73, 0xC0, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, + 0x08, 0x11, 0xFC, 0x3F, 0x02, 0x01, 0x00, 0x80, 0x40, 0x22, 0x11, 0x08, + 0x84, 0x3C, 0x00, 0xF3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, 0x08, 0x84, + 0x42, 0x78, 0xC0, 0xF8, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x82, 0x41, + 0x20, 0xFF, 0xC0, 0xE0, 0xCC, 0x29, 0x45, 0x29, 0x24, 0xA4, 0x94, 0x91, + 0x12, 0x02, 0x40, 0x5E, 0x3C, 0x61, 0xCC, 0x23, 0x08, 0xA2, 0x24, 0x89, + 0x22, 0x28, 0x8A, 0x21, 0x9C, 0x20, 0x3E, 0x20, 0xA0, 0x50, 0x18, 0x0C, + 0x06, 0x03, 0x02, 0x41, 0x1F, 0x00, 0xFE, 0x41, 0x41, 0x41, 0x42, 0x7C, + 0x40, 0x40, 0x40, 0xF8, 0x3E, 0x20, 0xA0, 0x50, 0x18, 0x0C, 0x06, 0x03, + 0x02, 0x41, 0x1B, 0x06, 0x07, 0xF0, 0xFE, 0x10, 0x44, 0x11, 0x04, 0x42, + 0x1F, 0x04, 0x21, 0x08, 0x41, 0x3C, 0x30, 0x7F, 0x06, 0x0C, 0x07, 0x01, + 0x80, 0x81, 0x83, 0xF8, 0xFF, 0xC4, 0x42, 0x01, 0x00, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, + 0x82, 0x41, 0x1F, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x82, 0x10, 0x22, + 0x04, 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xD0, 0x14, 0x49, 0x32, 0x4A, + 0x92, 0xA3, 0x28, 0xCA, 0x31, 0x88, 0x60, 0xE3, 0xA1, 0x08, 0x82, 0x80, + 0x80, 0xC0, 0x50, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA1, 0x08, 0x82, 0x81, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x41, 0x04, + 0x10, 0xA1, 0x83, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x4E, 0x81, 0x01, 0x02, + 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xE4, 0x92, 0x49, + 0x24, 0x9E, 0x10, 0x51, 0x24, 0x28, 0x20, 0xFF, 0xE0, 0x11, 0x80, 0x1C, + 0x31, 0x00, 0x83, 0xC6, 0x24, 0x12, 0x08, 0xFB, 0xE0, 0x08, 0x02, 0x00, + 0xB8, 0x31, 0x88, 0x22, 0x04, 0x81, 0x20, 0x48, 0x2F, 0xF0, 0x38, 0x46, + 0x82, 0x80, 0x80, 0x80, 0x81, 0x7E, 0x03, 0x00, 0x40, 0x10, 0x64, 0x67, + 0x20, 0x48, 0x12, 0x04, 0x81, 0x10, 0xC3, 0xD8, 0x1C, 0x62, 0x81, 0x81, + 0xFE, 0x80, 0x40, 0x3F, 0x1F, 0x20, 0x20, 0x7C, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0xFE, 0x39, 0xA3, 0xA0, 0x50, 0x28, 0x14, 0x09, 0x0C, 0x7A, + 0x01, 0x01, 0x07, 0x80, 0xC0, 0x20, 0x10, 0x0B, 0x86, 0x22, 0x09, 0x04, + 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x20, 0x03, 0x81, 0x02, 0x04, 0x08, + 0x10, 0x23, 0xF8, 0x10, 0x81, 0xF0, 0x84, 0x21, 0x08, 0x42, 0x10, 0xFC, + 0xC0, 0x20, 0x10, 0x08, 0xC4, 0x42, 0x41, 0x40, 0x50, 0x44, 0x21, 0x31, + 0xE0, 0xF0, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, 0xF8, 0x59, + 0x8C, 0xD1, 0x11, 0x22, 0x24, 0x44, 0x88, 0x91, 0x17, 0x33, 0x5C, 0x31, + 0x10, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x1C, 0x31, 0x10, 0x50, 0x28, + 0x14, 0x09, 0x04, 0x7C, 0x6E, 0x0C, 0x62, 0x08, 0x81, 0x20, 0x48, 0x23, + 0x08, 0xBC, 0x20, 0x08, 0x07, 0x00, 0x1D, 0x98, 0xC8, 0x12, 0x04, 0x81, + 0x20, 0x44, 0x30, 0xF4, 0x01, 0x00, 0x40, 0x38, 0xC6, 0x59, 0x20, 0x40, + 0x40, 0x40, 0x40, 0xFC, 0x39, 0x8E, 0x03, 0x01, 0xC0, 0x60, 0xFE, 0x40, + 0x40, 0xFC, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x3F, 0xC3, 0x20, 0x90, + 0x48, 0x24, 0x12, 0x09, 0x0C, 0x7B, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x21, + 0x20, 0x50, 0x10, 0xC1, 0xC0, 0xA2, 0x49, 0x25, 0x52, 0xB1, 0x98, 0x44, + 0x63, 0x20, 0x88, 0x83, 0x81, 0x81, 0x21, 0x09, 0xC7, 0xC3, 0x20, 0x90, + 0x44, 0x42, 0x20, 0xA0, 0x50, 0x10, 0x08, 0x08, 0x1E, 0x00, 0xFF, 0x0A, + 0x20, 0x81, 0x04, 0x10, 0xFF, 0x12, 0x22, 0x22, 0xC2, 0x22, 0x22, 0x30, + 0xFF, 0xF8, 0xC1, 0x08, 0x42, 0x10, 0x64, 0x21, 0x08, 0x44, 0x00, 0xE2, + 0x38, 0xFF, 0xF0, 0x06, 0xFC, 0xD0, 0x58, 0x0B, 0x01, 0x60, 0xCC, 0x21, + 0x84, 0x30, 0x06, 0x10, 0xC7, 0x18, 0x03, 0xFF, 0xC0, 0x00, 0xC0, 0x55, + 0x54, 0x10, 0x43, 0x91, 0x82, 0x08, 0x11, 0x38, 0x41, 0x00, 0x3C, 0x20, + 0x20, 0x20, 0xF8, 0x20, 0x20, 0x20, 0x21, 0x7F, 0x3F, 0xA0, 0x90, 0x10, + 0x0F, 0xE7, 0xE2, 0x00, 0x80, 0x20, 0x8F, 0x80, 0xE3, 0xA1, 0x08, 0x82, + 0x81, 0x83, 0xF8, 0x20, 0x7C, 0x08, 0x1F, 0x00, 0x6C, 0x20, 0x03, 0xF8, + 0x30, 0x60, 0x38, 0x0C, 0x04, 0x0C, 0x1F, 0xC0, 0x1F, 0x10, 0x88, 0x4C, + 0x09, 0x82, 0x30, 0x84, 0x31, 0x07, 0x01, 0x10, 0x8F, 0x80, 0x00, 0xD8, + 0x40, 0x03, 0x98, 0xE0, 0x30, 0x1C, 0x06, 0x0F, 0xE0, 0x3F, 0x08, 0x12, + 0x3D, 0x48, 0x9A, 0x03, 0x40, 0x64, 0x4A, 0x72, 0x40, 0x87, 0xE0, 0xF0, + 0xBD, 0x2F, 0x80, 0x00, 0x08, 0x88, 0x88, 0xCC, 0x43, 0x10, 0x44, 0x11, + 0xFF, 0x80, 0x40, 0x20, 0x10, 0x00, 0x7F, 0x00, 0x3F, 0x08, 0x12, 0x79, + 0x49, 0x19, 0x23, 0x3C, 0x64, 0x8A, 0xCA, 0x40, 0x87, 0xE0, 0xF8, 0xF4, + 0x63, 0x17, 0x00, 0x00, 0x04, 0x02, 0x01, 0x0F, 0xF0, 0x40, 0x20, 0x10, + 0x00, 0x7F, 0x80, 0x79, 0x12, 0x4F, 0x71, 0x13, 0x1F, 0x04, 0xD0, 0x40, + 0x0F, 0xD0, 0xA2, 0x04, 0x10, 0x41, 0x0A, 0x18, 0x3F, 0xC0, 0xC3, 0x20, + 0x90, 0x48, 0x24, 0x12, 0x09, 0x0C, 0xDB, 0x50, 0x20, 0x10, 0x08, 0x00, + 0x3F, 0x6A, 0xCA, 0xCA, 0x4A, 0x7A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x3B, + 0x50, 0x00, 0xD8, 0x40, 0x0F, 0xF0, 0xA2, 0x08, 0x10, 0x41, 0x0F, 0xF0, + 0x62, 0x22, 0x27, 0xF4, 0x63, 0x17, 0x00, 0x00, 0x22, 0x18, 0x86, 0x61, + 0x11, 0x11, 0x11, 0x10, 0x3F, 0xC8, 0x8A, 0x11, 0x42, 0x08, 0x71, 0x0A, + 0x21, 0x02, 0x21, 0x44, 0x27, 0xFC, 0x31, 0x92, 0x98, 0x46, 0x11, 0x87, + 0xA1, 0x04, 0xC1, 0xEF, 0x22, 0x11, 0x00, 0x1C, 0x74, 0x21, 0x10, 0x50, + 0x30, 0x08, 0x04, 0x02, 0x01, 0x03, 0xE0, 0x10, 0xE0, 0x00, 0x10, 0xC4, + 0x20, 0x82, 0x17, 0xC0, 0x10, 0x01, 0x00, 0x10, 0x00, 0x03, 0xC0, 0x14, + 0x04, 0x80, 0x90, 0x11, 0x04, 0x20, 0xFC, 0x10, 0x44, 0x09, 0xE3, 0xC0, + 0x02, 0x00, 0x80, 0x20, 0x00, 0x03, 0xC0, 0x14, 0x04, 0x80, 0x90, 0x11, + 0x04, 0x20, 0xFC, 0x10, 0x44, 0x09, 0xE3, 0xC0, 0x04, 0x01, 0x40, 0x44, + 0x00, 0x03, 0xC0, 0x14, 0x04, 0x80, 0x90, 0x11, 0x04, 0x20, 0xFC, 0x10, + 0x44, 0x09, 0xE3, 0xC0, 0x08, 0x02, 0xE0, 0x00, 0x1E, 0x00, 0xA0, 0x24, + 0x04, 0x80, 0x88, 0x21, 0x07, 0xE0, 0x82, 0x20, 0x4F, 0x1E, 0x11, 0x02, + 0x20, 0x00, 0x1E, 0x00, 0xA0, 0x24, 0x04, 0x80, 0x88, 0x21, 0x07, 0xE0, + 0x82, 0x20, 0x4F, 0x1E, 0x0E, 0x02, 0x40, 0x30, 0x00, 0x03, 0xC0, 0x14, + 0x04, 0x80, 0x90, 0x11, 0x04, 0x20, 0xFC, 0x10, 0x44, 0x09, 0xE3, 0xC0, + 0x3F, 0xC2, 0x88, 0x51, 0x0A, 0x02, 0x70, 0x4A, 0x0F, 0x01, 0x21, 0x44, + 0x3D, 0xFC, 0x3F, 0x20, 0xA0, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x41, + 0x1B, 0x02, 0x00, 0x81, 0xC0, 0x20, 0x10, 0x08, 0x00, 0xFF, 0x41, 0x41, + 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, 0x04, 0x08, 0x10, 0x00, 0xFF, + 0x41, 0x41, 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, 0x00, 0x1C, 0x22, + 0x00, 0xFF, 0x41, 0x41, 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, 0x22, + 0x66, 0x00, 0xFF, 0x41, 0x41, 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, + 0x20, 0x20, 0x00, 0x0F, 0xE2, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, + 0xC0, 0x04, 0x10, 0x40, 0x0F, 0xE2, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, + 0x1F, 0xC0, 0x10, 0x51, 0x10, 0x0F, 0xE2, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x81, 0x1F, 0xC0, 0x44, 0x88, 0x07, 0xF1, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x8F, 0xE0, 0x7E, 0x10, 0x88, 0x24, 0x1F, 0xC9, 0x04, 0x82, 0x41, + 0x21, 0x3F, 0x00, 0x19, 0x09, 0x80, 0x01, 0x87, 0x30, 0x8C, 0x22, 0x88, + 0x92, 0x24, 0x88, 0xA2, 0x28, 0x86, 0x70, 0x80, 0x20, 0x0C, 0x00, 0x00, + 0x03, 0xE2, 0x0A, 0x05, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x24, 0x11, 0xF0, + 0x04, 0x04, 0x04, 0x00, 0x03, 0xE2, 0x0A, 0x05, 0x01, 0x80, 0xC0, 0x60, + 0x30, 0x24, 0x11, 0xF0, 0x08, 0x0A, 0x08, 0x80, 0x03, 0xE2, 0x0A, 0x05, + 0x01, 0x80, 0xC0, 0x60, 0x30, 0x24, 0x11, 0xF0, 0x10, 0x17, 0x00, 0x07, + 0xC4, 0x14, 0x0A, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x48, 0x23, 0xE0, 0x22, + 0x11, 0x00, 0x07, 0xC4, 0x14, 0x0A, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x48, + 0x23, 0xE0, 0x84, 0x90, 0xC1, 0x84, 0x90, 0x80, 0x00, 0x9F, 0x90, 0x50, + 0x68, 0x4C, 0x46, 0x43, 0x21, 0xA1, 0x20, 0xAD, 0x81, 0x00, 0x20, 0x0C, + 0x00, 0x00, 0x0E, 0x3A, 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0x48, 0x24, + 0x11, 0xF0, 0x04, 0x04, 0x04, 0x00, 0x0E, 0x3A, 0x09, 0x04, 0x82, 0x41, + 0x20, 0x90, 0x48, 0x24, 0x11, 0xF0, 0x08, 0x0A, 0x08, 0x80, 0x0E, 0x3A, + 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0x48, 0x24, 0x11, 0xF0, 0x22, 0x11, + 0x00, 0x1C, 0x74, 0x12, 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0x48, 0x23, + 0xE0, 0x04, 0x04, 0x04, 0x00, 0x0E, 0x3A, 0x10, 0x88, 0x28, 0x18, 0x04, + 0x02, 0x01, 0x00, 0x81, 0xF0, 0xF8, 0x40, 0x7C, 0x43, 0x41, 0x41, 0x41, + 0x7E, 0x40, 0xF8, 0x1C, 0x11, 0x08, 0x84, 0x42, 0xC1, 0x18, 0x82, 0x41, + 0x20, 0x94, 0x79, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x01, 0xC3, 0x10, 0x08, + 0x3C, 0x62, 0x41, 0x20, 0x8F, 0xB0, 0x00, 0x06, 0x04, 0x00, 0x01, 0xC3, + 0x10, 0x08, 0x3C, 0x62, 0x41, 0x20, 0x8F, 0xB0, 0x18, 0x12, 0x00, 0x03, + 0x86, 0x20, 0x10, 0x78, 0xC4, 0x82, 0x41, 0x1F, 0x60, 0x3E, 0x00, 0x07, + 0x0C, 0x40, 0x20, 0xF1, 0x89, 0x04, 0x82, 0x3E, 0xC0, 0x22, 0x33, 0x00, + 0x03, 0x86, 0x20, 0x10, 0x78, 0xC4, 0x82, 0x41, 0x1F, 0x60, 0x1C, 0x12, + 0x05, 0x01, 0x01, 0xC3, 0x10, 0x08, 0x3C, 0x62, 0x41, 0x20, 0x8F, 0xB0, + 0x39, 0x91, 0x90, 0x44, 0xF1, 0x47, 0xA1, 0x08, 0x41, 0xFF, 0x38, 0x46, + 0x82, 0x80, 0x80, 0x80, 0x81, 0x6E, 0x10, 0x08, 0x38, 0x00, 0x10, 0x08, + 0x00, 0x1C, 0x62, 0x81, 0x81, 0xFE, 0x80, 0x40, 0x3F, 0x00, 0x04, 0x18, + 0x00, 0x1C, 0x62, 0x81, 0x81, 0xFE, 0x80, 0x40, 0x3F, 0x08, 0x36, 0x00, + 0x1C, 0x62, 0x81, 0x81, 0xFE, 0x80, 0x40, 0x3F, 0x22, 0x22, 0x00, 0x1C, + 0x62, 0x81, 0x81, 0xFE, 0x80, 0x40, 0x3F, 0x40, 0x40, 0x40, 0x07, 0x02, + 0x04, 0x08, 0x10, 0x20, 0x47, 0xF0, 0x00, 0x30, 0x80, 0x07, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x47, 0xF0, 0x30, 0x90, 0x03, 0x81, 0x02, 0x04, 0x08, + 0x10, 0x23, 0xF8, 0x45, 0x98, 0x03, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, + 0xF8, 0x36, 0x0E, 0x00, 0x83, 0xC6, 0x32, 0x0A, 0x05, 0x02, 0x81, 0x20, + 0x8F, 0x80, 0x3E, 0x00, 0x17, 0x0C, 0x44, 0x12, 0x09, 0x04, 0x82, 0x41, + 0x71, 0xC0, 0x00, 0x08, 0x02, 0x00, 0x01, 0xC3, 0x11, 0x05, 0x02, 0x81, + 0x40, 0x90, 0x47, 0xC0, 0x00, 0x02, 0x06, 0x00, 0x01, 0xC3, 0x11, 0x05, + 0x02, 0x81, 0x40, 0x90, 0x47, 0xC0, 0x18, 0x13, 0x00, 0x03, 0x86, 0x22, + 0x0A, 0x05, 0x02, 0x81, 0x20, 0x8F, 0x80, 0x3E, 0x00, 0x07, 0x0C, 0x44, + 0x14, 0x0A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x22, 0x11, 0x00, 0x03, 0x86, + 0x22, 0x0A, 0x05, 0x02, 0x81, 0x20, 0x8F, 0x80, 0x08, 0x04, 0x00, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x08, 0x04, 0x00, 0x1D, 0x31, 0x10, 0xD0, + 0xA8, 0x94, 0x89, 0x84, 0xEC, 0x88, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0C, + 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0xC7, 0xB0, 0x04, 0x04, 0x04, + 0x00, 0x0C, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0xC7, 0xB0, 0x18, + 0x12, 0x00, 0x18, 0x64, 0x12, 0x09, 0x04, 0x82, 0x41, 0x21, 0x8F, 0x60, + 0x22, 0x33, 0x00, 0x18, 0x64, 0x12, 0x09, 0x04, 0x82, 0x41, 0x21, 0x8F, + 0x60, 0x02, 0x02, 0x02, 0x00, 0x0C, 0x32, 0x09, 0x04, 0x44, 0x22, 0x0A, + 0x05, 0x01, 0x00, 0x80, 0x81, 0xE0, 0xE0, 0x08, 0x02, 0x00, 0xB8, 0x31, + 0x88, 0x22, 0x04, 0x81, 0x20, 0x8C, 0x22, 0xF0, 0x80, 0x20, 0x1C, 0x00, + 0x22, 0x11, 0x00, 0x18, 0x64, 0x12, 0x08, 0x88, 0x44, 0x14, 0x0A, 0x02, + 0x01, 0x01, 0x03, 0xC0 }; + +const GFXglyph FreeMono9pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 11, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 2, 11, 11, 4, -10 }, // 0x21 '!' U+0021 + { 4, 5, 5, 11, 3, -10 }, // 0x22 '"' U+0022 + { 8, 7, 13, 11, 2, -11 }, // 0x23 '#' U+0023 + { 20, 7, 14, 11, 2, -11 }, // 0x24 '$' U+0024 + { 33, 7, 11, 11, 2, -10 }, // 0x25 '%' U+0025 + { 43, 7, 9, 11, 2, -8 }, // 0x26 '&' U+0026 + { 51, 3, 5, 11, 4, -10 }, // 0x27 ''' U+0027 + { 53, 3, 13, 11, 5, -10 }, // 0x28 '(' U+0028 + { 58, 3, 13, 11, 3, -10 }, // 0x29 ')' U+0029 + { 63, 7, 7, 11, 2, -10 }, // 0x2a '*' U+002A + { 70, 9, 9, 11, 1, -9 }, // 0x2b '+' U+002B + { 81, 4, 6, 11, 2, -2 }, // 0x2c ',' U+002C + { 84, 9, 1, 11, 1, -5 }, // 0x2d '-' U+002D + { 86, 3, 2, 11, 4, -1 }, // 0x2e '.' U+002E + { 87, 7, 13, 11, 2, -11 }, // 0x2f '/' U+002F + { 99, 7, 11, 11, 2, -10 }, // 0x30 '0' U+0030 + { 109, 7, 11, 11, 2, -10 }, // 0x31 '1' U+0031 + { 119, 7, 11, 11, 2, -10 }, // 0x32 '2' U+0032 + { 129, 7, 11, 11, 2, -10 }, // 0x33 '3' U+0033 + { 139, 7, 11, 11, 2, -10 }, // 0x34 '4' U+0034 + { 149, 7, 11, 11, 2, -10 }, // 0x35 '5' U+0035 + { 159, 7, 11, 11, 2, -10 }, // 0x36 '6' U+0036 + { 169, 7, 11, 11, 2, -10 }, // 0x37 '7' U+0037 + { 179, 7, 11, 11, 2, -10 }, // 0x38 '8' U+0038 + { 189, 7, 11, 11, 2, -10 }, // 0x39 '9' U+0039 + { 199, 3, 8, 11, 4, -7 }, // 0x3a ':' U+003A + { 202, 4, 11, 11, 2, -7 }, // 0x3b ';' U+003B + { 208, 8, 8, 11, 1, -8 }, // 0x3c '<' U+003C + { 216, 9, 4, 11, 1, -6 }, // 0x3d '=' U+003D + { 221, 9, 8, 11, 1, -8 }, // 0x3e '>' U+003E + { 230, 7, 10, 11, 2, -9 }, // 0x3f '?' U+003F + { 239, 7, 12, 11, 2, -10 }, // 0x40 '@' U+0040 + { 250, 11, 10, 11, 0, -9 }, // 0x41 'A' U+0041 + { 264, 9, 10, 11, 1, -9 }, // 0x42 'B' U+0042 + { 276, 9, 10, 11, 1, -9 }, // 0x43 'C' U+0043 + { 288, 8, 10, 11, 1, -9 }, // 0x44 'D' U+0044 + { 298, 8, 10, 11, 1, -9 }, // 0x45 'E' U+0045 + { 308, 8, 10, 11, 1, -9 }, // 0x46 'F' U+0046 + { 318, 9, 10, 11, 1, -9 }, // 0x47 'G' U+0047 + { 330, 9, 10, 11, 1, -9 }, // 0x48 'H' U+0048 + { 342, 7, 10, 11, 2, -9 }, // 0x49 'I' U+0049 + { 351, 9, 10, 11, 2, -9 }, // 0x4a 'J' U+004A + { 363, 9, 10, 11, 1, -9 }, // 0x4b 'K' U+004B + { 375, 9, 10, 11, 1, -9 }, // 0x4c 'L' U+004C + { 387, 11, 10, 11, 0, -9 }, // 0x4d 'M' U+004D + { 401, 10, 10, 11, 0, -9 }, // 0x4e 'N' U+004E + { 414, 9, 10, 11, 1, -9 }, // 0x4f 'O' U+004F + { 426, 8, 10, 11, 1, -9 }, // 0x50 'P' U+0050 + { 436, 9, 12, 11, 1, -9 }, // 0x51 'Q' U+0051 + { 450, 10, 10, 11, 1, -9 }, // 0x52 'R' U+0052 + { 463, 7, 10, 11, 2, -9 }, // 0x53 'S' U+0053 + { 472, 9, 10, 11, 1, -9 }, // 0x54 'T' U+0054 + { 484, 9, 10, 11, 1, -9 }, // 0x55 'U' U+0055 + { 496, 11, 10, 11, 0, -9 }, // 0x56 'V' U+0056 + { 510, 10, 10, 11, 0, -9 }, // 0x57 'W' U+0057 + { 523, 9, 10, 11, 1, -9 }, // 0x58 'X' U+0058 + { 535, 9, 10, 11, 1, -9 }, // 0x59 'Y' U+0059 + { 547, 7, 10, 11, 2, -9 }, // 0x5a 'Z' U+005A + { 556, 3, 13, 11, 5, -10 }, // 0x5b '[' U+005B + { 561, 7, 13, 11, 2, -11 }, // 0x5c '\' U+005C + { 573, 3, 13, 11, 3, -10 }, // 0x5d ']' U+005D + { 578, 7, 5, 11, 2, -10 }, // 0x5e '^' U+005E + { 583, 11, 1, 11, 0, 2 }, // 0x5f '_' U+005F + { 585, 3, 3, 11, 3, -11 }, // 0x60 '`' U+0060 + { 587, 9, 8, 11, 1, -7 }, // 0x61 'a' U+0061 + { 596, 10, 11, 11, 0, -10 }, // 0x62 'b' U+0062 + { 610, 8, 8, 11, 2, -7 }, // 0x63 'c' U+0063 + { 618, 10, 11, 11, 1, -10 }, // 0x64 'd' U+0064 + { 632, 8, 8, 11, 1, -7 }, // 0x65 'e' U+0065 + { 640, 8, 11, 11, 2, -10 }, // 0x66 'f' U+0066 + { 651, 9, 11, 11, 1, -7 }, // 0x67 'g' U+0067 + { 664, 9, 11, 11, 1, -10 }, // 0x68 'h' U+0068 + { 677, 7, 11, 11, 2, -10 }, // 0x69 'i' U+0069 + { 687, 5, 14, 11, 3, -10 }, // 0x6a 'j' U+006A + { 696, 9, 11, 11, 1, -10 }, // 0x6b 'k' U+006B + { 709, 7, 11, 11, 2, -10 }, // 0x6c 'l' U+006C + { 719, 11, 8, 11, 0, -7 }, // 0x6d 'm' U+006D + { 730, 9, 8, 11, 1, -7 }, // 0x6e 'n' U+006E + { 739, 9, 8, 11, 1, -7 }, // 0x6f 'o' U+006F + { 748, 10, 11, 11, 0, -7 }, // 0x70 'p' U+0070 + { 762, 10, 11, 11, 1, -7 }, // 0x71 'q' U+0071 + { 776, 8, 8, 11, 2, -7 }, // 0x72 'r' U+0072 + { 784, 7, 8, 11, 2, -7 }, // 0x73 's' U+0073 + { 791, 8, 10, 11, 1, -9 }, // 0x74 't' U+0074 + { 801, 9, 8, 11, 1, -7 }, // 0x75 'u' U+0075 + { 810, 9, 8, 11, 1, -7 }, // 0x76 'v' U+0076 + { 819, 9, 8, 11, 1, -7 }, // 0x77 'w' U+0077 + { 828, 9, 8, 11, 1, -7 }, // 0x78 'x' U+0078 + { 837, 9, 11, 11, 1, -7 }, // 0x79 'y' U+0079 + { 850, 7, 8, 11, 2, -7 }, // 0x7a 'z' U+007A + { 857, 4, 13, 11, 3, -10 }, // 0x7b '{' U+007B + { 864, 1, 13, 11, 5, -10 }, // 0x7c '|' U+007C + { 866, 5, 13, 11, 3, -10 }, // 0x7d '}' U+007D + { 875, 7, 2, 11, 2, -5 }, // 0x7e '~' U+007E + { 877, 11, 14, 11, 0, -11 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 897, 1, 1, 11, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 898, 2, 11, 11, 4, -7 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 901, 6, 11, 11, 2, -10 }, // 0x82 'CENT SIGN' U+00A2 + { 910, 8, 10, 11, 1, -9 }, // 0x83 'POUND SIGN' U+00A3 + { 920, 9, 10, 11, 1, -9 }, // 0x84 'EURO SIGN *' U+20AC + { 932, 9, 10, 11, 1, -9 }, // 0x85 'YEN SIGN' U+00A5 + { 944, 7, 13, 11, 2, -12 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 956, 9, 12, 11, 1, -10 }, // 0x87 'SECTION SIGN' U+00A7 + { 970, 7, 12, 11, 2, -11 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 981, 11, 10, 11, 0, -9 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 995, 5, 5, 11, 3, -9 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 999, 9, 8, 11, 1, -7 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 1008, 9, 5, 11, 1, -7 }, // 0x8c 'NOT SIGN' U+00AC + { 1014, 9, 1, 11, 1, -5 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 1016, 11, 10, 11, 0, -9 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 1030, 5, 1, 11, 3, -10 }, // 0x8f 'MACRON' U+00AF + { 1031, 5, 5, 11, 3, -10 }, // 0x90 'DEGREE SIGN' U+00B0 + { 1035, 9, 10, 11, 1, -9 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 1047, 4, 6, 11, 3, -10 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 1050, 4, 6, 11, 3, -10 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 1053, 7, 14, 11, 2, -13 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 1066, 9, 12, 11, 1, -7 }, // 0x95 'MICRO SIGN' U+00B5 + { 1080, 8, 12, 11, 1, -10 }, // 0x96 'PILCROW SIGN' U+00B6 + { 1092, 2, 2, 11, 4, -4 }, // 0x97 'MIDDLE DOT' U+00B7 + { 1093, 7, 12, 11, 2, -11 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 1104, 4, 6, 11, 3, -10 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 1107, 5, 5, 11, 3, -9 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 1111, 9, 8, 11, 1, -7 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 1120, 11, 10, 11, 0, -9 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 1134, 10, 8, 11, 0, -7 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 1144, 9, 13, 11, 1, -12 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 1159, 6, 11, 11, 2, -7 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 1168, 11, 14, 11, 0, -13 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 1188, 11, 14, 11, 0, -13 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 1208, 11, 14, 11, 0, -13 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 1228, 11, 13, 11, 0, -12 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 1246, 11, 13, 11, 0, -12 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 1264, 11, 14, 11, 0, -13 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 1284, 11, 10, 11, 0, -9 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 1298, 9, 13, 11, 1, -9 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 1313, 8, 14, 11, 1, -13 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 1327, 8, 14, 11, 1, -13 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 1341, 8, 14, 11, 1, -13 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 1355, 8, 13, 11, 1, -12 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 1368, 7, 14, 11, 2, -13 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 1381, 7, 14, 11, 2, -13 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 1394, 7, 14, 11, 2, -13 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 1407, 7, 13, 11, 2, -12 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 1419, 9, 10, 11, 0, -9 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 1431, 10, 13, 11, 0, -12 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 1448, 9, 14, 11, 1, -13 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 1464, 9, 14, 11, 1, -13 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 1480, 9, 14, 11, 1, -13 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 1496, 9, 13, 11, 1, -12 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 1511, 9, 13, 11, 1, -12 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 1526, 7, 6, 11, 2, -7 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 1532, 9, 12, 11, 1, -10 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 1546, 9, 14, 11, 1, -13 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 1562, 9, 14, 11, 1, -13 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 1578, 9, 14, 11, 1, -13 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 1594, 9, 13, 11, 1, -12 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 1609, 9, 14, 11, 1, -13 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 1625, 8, 10, 11, 1, -9 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 1635, 9, 11, 11, 0, -10 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 1648, 9, 12, 11, 1, -11 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 1662, 9, 12, 11, 1, -11 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 1676, 9, 11, 11, 1, -10 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 1689, 9, 10, 11, 1, -9 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 1701, 9, 11, 11, 1, -10 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 1714, 9, 12, 11, 1, -11 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 1728, 10, 8, 11, 0, -7 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 1738, 8, 11, 11, 2, -7 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 1749, 8, 12, 11, 1, -11 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 1761, 8, 12, 11, 1, -11 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 1773, 8, 11, 11, 1, -10 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 1784, 8, 11, 11, 1, -10 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 1795, 7, 12, 11, 2, -11 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 1806, 7, 12, 11, 2, -11 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 1817, 7, 11, 11, 2, -10 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 1827, 7, 11, 11, 2, -10 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 1837, 9, 11, 11, 1, -10 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 1850, 9, 10, 11, 1, -9 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 1862, 9, 12, 11, 1, -11 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 1876, 9, 12, 11, 1, -11 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 1890, 9, 11, 11, 1, -10 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 1903, 9, 10, 11, 1, -9 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 1915, 9, 11, 11, 1, -10 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 1928, 9, 10, 11, 1, -9 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 1940, 9, 9, 11, 1, -7 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 1951, 9, 12, 11, 1, -11 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 1965, 9, 12, 11, 1, -11 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 1979, 9, 11, 11, 1, -10 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 1992, 9, 11, 11, 1, -10 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 2005, 9, 15, 11, 1, -11 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 2022, 10, 14, 11, 0, -10 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 2040, 9, 14, 11, 1, -10 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeMono9pt8b PROGMEM = { + (uint8_t *)FreeMono9pt8bBitmaps, + (GFXglyph *)FreeMono9pt8bGlyphs, + 0x20, 0xDF, 19 }; + +// Approx. 3407 bytes diff --git a/RX_FSK/src/fonts/FreeSans12pt8b.h b/RX_FSK/src/fonts/FreeSans12pt8b.h new file mode 100644 index 0000000..4411f8c --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans12pt8b.h @@ -0,0 +1,596 @@ +const uint8_t FreeSans12pt8bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFF, 0xFF, 0xF3, 0xF0, 0xCF, 0x3C, 0xF3, 0x4D, 0x10, 0x06, + 0x30, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x3F, 0xFD, 0xFF, 0xE1, 0x98, + 0x18, 0xC0, 0xC6, 0x06, 0x31, 0xFF, 0xE1, 0x88, 0x08, 0xC0, 0xC6, 0x06, + 0x30, 0x31, 0x80, 0x04, 0x03, 0xF1, 0xFF, 0x32, 0x7C, 0x47, 0x88, 0xF1, + 0x07, 0x20, 0x7C, 0x07, 0xF0, 0x1F, 0x02, 0x70, 0x47, 0x88, 0xF1, 0x1E, + 0x23, 0x64, 0xE7, 0xF8, 0x10, 0x02, 0x00, 0x40, 0x00, 0x06, 0x07, 0xC0, + 0x40, 0xE6, 0x0C, 0x0C, 0x30, 0x80, 0x83, 0x18, 0x0C, 0x31, 0x00, 0xC6, + 0x30, 0x07, 0xE2, 0x00, 0x38, 0x60, 0x00, 0x0C, 0x38, 0x00, 0xC7, 0xC0, + 0x18, 0xC6, 0x01, 0x18, 0x30, 0x31, 0x83, 0x02, 0x08, 0x20, 0x60, 0xC6, + 0x04, 0x07, 0xC0, 0x0F, 0x00, 0x7E, 0x03, 0x8C, 0x0C, 0x30, 0x30, 0xC0, + 0x67, 0x01, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0xCC, 0x66, 0x39, 0xB0, 0x7C, + 0xC0, 0xF3, 0x01, 0x8E, 0x0F, 0x1C, 0xFE, 0x3F, 0x9C, 0x10, 0x00, 0xFF, + 0x50, 0x08, 0x8C, 0x46, 0x31, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC2, + 0x18, 0x43, 0x08, 0x60, 0x86, 0x18, 0xC3, 0x18, 0x43, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x11, 0x8C, 0x46, 0x23, 0x00, 0x10, 0x22, 0x4F, 0xF3, 0x85, + 0x1B, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0x06, + 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0x97, 0xA0, 0xFC, 0xFF, + 0x80, 0x06, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, + 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x6E, 0x0F, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3E, 0x06, 0xC1, + 0xD8, 0x31, 0xCE, 0x3F, 0x80, 0x80, 0x04, 0x30, 0xFF, 0xFC, 0x30, 0xC3, + 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x1F, 0x07, 0xF9, 0xC3, 0xB0, + 0x3C, 0x07, 0x80, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x07, + 0x01, 0xC0, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x1F, 0x0F, 0xF9, 0x83, 0x70, + 0x7C, 0x0E, 0x01, 0xC0, 0x30, 0x7C, 0x0F, 0x80, 0x38, 0x01, 0x80, 0x3C, + 0x07, 0x80, 0xF8, 0x3B, 0x8E, 0x3F, 0x80, 0x80, 0x01, 0x80, 0x70, 0x0E, + 0x03, 0xC0, 0xD8, 0x33, 0x06, 0x61, 0x8C, 0x61, 0x8C, 0x33, 0x06, 0x7F, + 0xFF, 0xFE, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, + 0x30, 0x06, 0x00, 0xC0, 0x1F, 0xE3, 0xFE, 0xE0, 0xE0, 0x0C, 0x01, 0x80, + 0x30, 0x07, 0x80, 0xF8, 0x3B, 0x8E, 0x3F, 0x80, 0x80, 0x0F, 0x07, 0xF9, + 0xC3, 0x30, 0x36, 0x01, 0x80, 0x30, 0x86, 0xFC, 0xF9, 0xDC, 0x1F, 0x81, + 0xE0, 0x3C, 0x06, 0xC0, 0xD8, 0x3B, 0xCE, 0x3F, 0x80, 0x80, 0xFF, 0xFF, + 0xFC, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0xC0, + 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x38, 0x00, 0x1F, 0x07, + 0xF9, 0xC3, 0x30, 0x7E, 0x06, 0xC1, 0xD8, 0x31, 0xFC, 0x3F, 0x8E, 0x1B, + 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8E, 0x3F, 0x80, 0x80, 0x1F, + 0x07, 0xF1, 0x87, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x60, 0xEF, + 0xFC, 0x7D, 0x80, 0x30, 0x07, 0x81, 0x98, 0x33, 0x9C, 0x3F, 0x00, 0x80, + 0xFC, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xD7, 0x00, 0x00, 0x30, 0x1F, + 0x07, 0x81, 0xE0, 0xF8, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0xC0, 0x0F, + 0x00, 0x30, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0xC0, 0x0F, + 0x80, 0x1E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0x01, 0xE0, 0x78, 0x3E, 0x0F, + 0x00, 0xC0, 0x00, 0x1E, 0x1F, 0xE6, 0x1F, 0x03, 0xC0, 0xF0, 0x30, 0x0C, + 0x06, 0x03, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x30, 0x0C, + 0x03, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xFE, 0x00, 0x70, 0x3C, 0x07, 0x00, + 0x38, 0x38, 0x00, 0x70, 0xC0, 0x40, 0xE6, 0x0F, 0xD9, 0x98, 0x71, 0xC7, + 0xC3, 0x87, 0x0F, 0x0C, 0x0C, 0x3C, 0x30, 0x70, 0xF1, 0xC1, 0x86, 0xC7, + 0x06, 0x1B, 0x1C, 0x38, 0xEC, 0x39, 0xE7, 0x18, 0x7D, 0xF8, 0x70, 0x01, + 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF3, 0xC0, 0x03, 0xFF, 0x00, + 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, + 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, + 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, + 0xFE, 0x07, 0xFF, 0x30, 0x79, 0x80, 0xEC, 0x03, 0x60, 0x1B, 0x00, 0xD8, + 0x0C, 0xFF, 0xC7, 0xFF, 0x30, 0x1D, 0x80, 0x7C, 0x01, 0xE0, 0x0F, 0x00, + 0xF8, 0x0E, 0xFF, 0xF7, 0xFE, 0x00, 0x03, 0xC0, 0x1F, 0xF0, 0xF0, 0xE1, + 0x80, 0xE7, 0x00, 0xEC, 0x01, 0xF8, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, + 0x03, 0x00, 0x07, 0x00, 0x06, 0x00, 0x6C, 0x01, 0xDC, 0x03, 0x9C, 0x0E, + 0x1F, 0x78, 0x1F, 0xE0, 0x04, 0x00, 0xFE, 0x03, 0xFF, 0x8C, 0x1F, 0x30, + 0x0E, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, + 0xFF, 0x00, 0xFF, 0xF7, 0xFF, 0xB0, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x18, 0x00, 0xFF, 0xF7, 0xFF, 0xB0, 0x01, 0x80, 0x0C, 0x00, 0x60, + 0x03, 0x00, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x03, + 0xE0, 0x0F, 0xF8, 0x1E, 0x3C, 0x38, 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, + 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xE0, 0x03, 0xE0, + 0x03, 0x60, 0x03, 0x70, 0x07, 0x38, 0x0F, 0x1F, 0x7B, 0x0F, 0xF3, 0x00, + 0x80, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, + 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFC, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xE0, 0xF8, 0x3E, 0x0D, 0x87, 0x73, 0x8F, + 0xE0, 0x40, 0xC0, 0x1F, 0x00, 0xEC, 0x07, 0x30, 0x38, 0xC1, 0xC3, 0x0E, + 0x0C, 0x70, 0x33, 0x80, 0xDE, 0x03, 0xFC, 0x0F, 0x38, 0x38, 0x60, 0xC1, + 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xFF, 0xFC, 0xE0, + 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xD8, 0x1B, 0xD8, + 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xC6, 0x63, 0xC6, + 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0x83, 0xC0, + 0x1F, 0x80, 0x7F, 0x01, 0xFC, 0x07, 0xF8, 0x1F, 0x60, 0x7C, 0xC1, 0xF3, + 0x87, 0xC6, 0x1F, 0x0C, 0x7C, 0x39, 0xF0, 0x67, 0xC1, 0xDF, 0x03, 0xFC, + 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0x00, 0x70, 0x03, 0xE0, 0x07, 0xFC, 0x0F, + 0x8F, 0x07, 0x01, 0xC7, 0x00, 0x73, 0x00, 0x1B, 0x80, 0x0D, 0x80, 0x07, + 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x7E, 0x00, 0x33, 0x00, + 0x19, 0xC0, 0x1C, 0x70, 0x1C, 0x1F, 0x7C, 0x07, 0xFC, 0x00, 0x20, 0x00, + 0xFE, 0x07, 0xFF, 0x30, 0x7D, 0x80, 0x6C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, + 0x07, 0xC0, 0xF7, 0xFF, 0x3F, 0xC1, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, + 0x18, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x03, 0xE0, 0x07, 0xFC, 0x0F, 0x8F, + 0x07, 0x01, 0xC7, 0x00, 0x73, 0x00, 0x1B, 0x80, 0x0D, 0x80, 0x07, 0xC0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x7E, 0x00, 0x33, 0x01, 0x19, + 0xC0, 0xDC, 0x70, 0x3C, 0x1F, 0x7E, 0x07, 0xFF, 0x80, 0x20, 0xC0, 0xFF, + 0x03, 0xFF, 0xCC, 0x0F, 0xB0, 0x06, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xB0, + 0x06, 0xC0, 0xF3, 0xFF, 0x8C, 0x0F, 0x30, 0x06, 0xC0, 0x1B, 0x00, 0x6C, + 0x01, 0xB0, 0x06, 0xC0, 0x1F, 0x00, 0x70, 0x07, 0x80, 0xFF, 0x87, 0x87, + 0x18, 0x0E, 0x60, 0x19, 0x80, 0x66, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, + 0xC0, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x01, 0xDC, 0x06, 0x7E, + 0xF8, 0x7F, 0x80, 0x20, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x38, 0x00, 0xE0, + 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, + 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x0E, + 0x00, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, + 0x80, 0x6C, 0x07, 0x7D, 0xF1, 0xFF, 0x00, 0x80, 0xC0, 0x0F, 0x00, 0x3E, + 0x01, 0xD8, 0x06, 0x70, 0x18, 0xC0, 0xE3, 0x03, 0x0E, 0x0C, 0x18, 0x70, + 0x61, 0x81, 0xC6, 0x03, 0x38, 0x0C, 0xC0, 0x3B, 0x00, 0x6C, 0x01, 0xE0, + 0x07, 0x80, 0x0E, 0x00, 0xC0, 0x70, 0x1E, 0x03, 0x80, 0xF0, 0x1C, 0x0F, + 0xC1, 0xE0, 0x76, 0x0D, 0x83, 0x30, 0x6C, 0x19, 0x83, 0x61, 0xCE, 0x33, + 0x8E, 0x31, 0x8C, 0x61, 0x8C, 0x63, 0x0C, 0xE3, 0x18, 0x76, 0x0D, 0xC1, + 0xB0, 0x6C, 0x0D, 0x83, 0x60, 0x78, 0x1F, 0x03, 0xC0, 0x78, 0x0E, 0x03, + 0x80, 0x70, 0x1C, 0x00, 0xE0, 0x0C, 0xC0, 0x39, 0xC0, 0xE1, 0xC1, 0x81, + 0x87, 0x03, 0x9C, 0x03, 0xB0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x76, 0x01, 0xCE, 0x03, 0x0C, 0x0E, 0x0C, 0x38, 0x1C, 0x60, 0x1D, + 0xC0, 0x38, 0xE0, 0x07, 0x70, 0x06, 0x30, 0x0E, 0x38, 0x1C, 0x18, 0x18, + 0x1C, 0x38, 0x0E, 0x30, 0x06, 0x70, 0x07, 0x60, 0x03, 0xC0, 0x01, 0xC0, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, + 0x07, 0x00, 0x70, 0x07, 0x00, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x18, + 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, 0xF0, 0x81, 0x03, 0x02, 0x04, + 0x0C, 0x08, 0x10, 0x30, 0x20, 0x40, 0xC0, 0x81, 0x03, 0x02, 0x04, 0x0C, + 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0xF0, + 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, 0x8C, 0x83, 0xC1, 0x80, 0xFF, + 0xFE, 0xC3, 0x0C, 0x20, 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, 0x00, 0xC0, + 0x1C, 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, 0x7E, 0x70, + 0x02, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0xF0, 0xDF, 0xCF, + 0x0E, 0xE0, 0x6E, 0x06, 0xC0, 0x6C, 0x07, 0xC0, 0x7C, 0x06, 0xE0, 0x6E, + 0x0E, 0xF9, 0xCD, 0xF8, 0x00, 0x00, 0x1F, 0x0F, 0xE6, 0x1F, 0x83, 0xC0, + 0xF0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x3E, 0x0D, 0xC7, 0x3F, 0x81, 0x00, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xDF, 0xDB, 0x8F, 0xE0, + 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3F, 0x07, 0x7B, 0xE7, + 0xEC, 0x10, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x3C, 0x07, 0x80, 0xFF, + 0xFE, 0x00, 0xC0, 0x18, 0x0D, 0x83, 0xBC, 0xE3, 0xF8, 0x08, 0x00, 0x04, + 0x73, 0x0C, 0x33, 0xFF, 0xCC, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, + 0xC0, 0x1E, 0x67, 0xED, 0x87, 0xF0, 0x7C, 0x0F, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x1F, 0x83, 0xB9, 0xF3, 0xF6, 0x00, 0xF0, 0x37, 0x06, 0x7F, + 0xC7, 0xE0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x33, 0xCF, 0xFB, 0x87, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, + 0x30, 0xFC, 0x3F, 0xFF, 0xFF, 0xF0, 0x33, 0x30, 0x03, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0x3F, 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x81, 0xB0, 0x66, 0x18, 0xC6, 0x19, 0x83, 0x70, 0x7B, 0x0E, 0x71, + 0x86, 0x30, 0xE6, 0x0C, 0xC0, 0xD8, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xDE, 0x1E, 0xFF, 0x7F, 0xE3, 0xC3, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, + 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, + 0xC1, 0x83, 0xCF, 0x3F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, + 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0D, 0x83, 0xBD, 0xE3, + 0xF8, 0x08, 0x00, 0xCF, 0x0D, 0xFC, 0xF0, 0xCE, 0x06, 0xE0, 0x6C, 0x06, + 0xC0, 0x7C, 0x07, 0xC0, 0x6E, 0x06, 0xE0, 0xEF, 0x9C, 0xDF, 0x8C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x1E, 0x6F, 0xFD, 0xC7, 0xF0, 0x7C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x83, 0xBD, 0xF3, 0xF6, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0xDF, 0xFF, 0x30, 0xC3, 0x0C, + 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x1E, 0x1F, 0xEE, 0x1B, 0x06, 0xC0, 0x3C, + 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3C, 0x0F, 0xCE, 0x7F, 0x82, 0x00, 0x30, + 0xC3, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0x08, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC1, 0xF0, + 0x7C, 0x1F, 0x8F, 0x7E, 0xC4, 0x00, 0xE0, 0x76, 0x06, 0x60, 0x67, 0x0C, + 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xB0, 0x0F, 0x00, 0xE0, + 0x0E, 0x00, 0xC1, 0xC1, 0xF0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, + 0x31, 0x9B, 0x38, 0xCD, 0x98, 0x64, 0x6C, 0x36, 0x36, 0x0F, 0x1E, 0x07, + 0x8F, 0x03, 0x83, 0x80, 0xC1, 0x80, 0x60, 0x6E, 0x1C, 0xC3, 0x0C, 0xC1, + 0xF0, 0x1E, 0x01, 0x80, 0x78, 0x0F, 0x03, 0x30, 0xC7, 0x38, 0x66, 0x06, + 0x60, 0x6C, 0x0D, 0x81, 0x98, 0x63, 0x0C, 0x63, 0x86, 0x60, 0xCC, 0x1B, + 0x81, 0xE0, 0x3C, 0x07, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x78, 0x0F, + 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0E, 0x07, 0x03, 0x80, 0xC0, 0x60, 0x30, + 0x1C, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x04, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0xC6, 0x30, 0xE1, 0x83, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xE1, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x87, 0x18, 0x42, 0x10, 0x84, 0x21, + 0x8C, 0x31, 0x98, 0xC4, 0x21, 0x08, 0x42, 0x73, 0x80, 0x00, 0x3E, 0x1D, + 0xC6, 0x1F, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, + 0xFF, 0xFF, 0xFF, 0xF0, 0x04, 0x00, 0x80, 0x3C, 0x1F, 0xE7, 0x4E, 0xC8, + 0xD9, 0x1E, 0x20, 0xC4, 0x18, 0x83, 0x10, 0x32, 0x36, 0x46, 0x7B, 0x87, + 0xE0, 0x30, 0x04, 0x00, 0x80, 0x00, 0x01, 0xF8, 0x79, 0xC6, 0x0E, 0xE0, + 0x6E, 0x06, 0xE0, 0x06, 0x00, 0x70, 0x0F, 0xF0, 0x38, 0x01, 0x80, 0x18, + 0x01, 0x00, 0x30, 0x06, 0x00, 0xFF, 0xEE, 0xFF, 0x00, 0x80, 0x01, 0xF0, + 0x1F, 0xF0, 0xE0, 0x87, 0x00, 0x18, 0x00, 0xC0, 0x0F, 0xFF, 0x3F, 0xFC, + 0x30, 0x03, 0xFF, 0x8F, 0xFC, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, + 0x03, 0xC6, 0x07, 0xF8, 0x00, 0x00, 0x60, 0x1B, 0x01, 0x8C, 0x0C, 0x60, + 0xC1, 0x86, 0x0C, 0x60, 0x36, 0x00, 0xF0, 0x07, 0xF1, 0xFF, 0x80, 0xC0, + 0x06, 0x03, 0xFF, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x0C, 0xC0, + 0x16, 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0xFF, 0x87, 0x87, 0x18, 0x0E, + 0x60, 0x19, 0x80, 0x66, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, + 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x01, 0xDC, 0x06, 0x7E, 0xF8, 0x7F, + 0x80, 0x20, 0x00, 0x00, 0x03, 0xF0, 0xE7, 0x18, 0x63, 0x0C, 0x60, 0x0E, + 0x01, 0xF0, 0x67, 0x98, 0x7B, 0x03, 0xE0, 0x37, 0x06, 0xF0, 0xC7, 0x18, + 0x7E, 0x07, 0x80, 0x31, 0x87, 0x30, 0x67, 0x1C, 0x7F, 0x07, 0xC0, 0x21, + 0x0C, 0xC1, 0xE0, 0x70, 0x00, 0x07, 0x87, 0xFB, 0x86, 0xC1, 0xB0, 0x0F, + 0x01, 0xFC, 0x0F, 0x80, 0x7C, 0x0F, 0x03, 0xF3, 0x9F, 0xE0, 0x80, 0x03, + 0xE0, 0x03, 0xFF, 0x01, 0x80, 0xE0, 0xC0, 0x0C, 0x61, 0xE1, 0xB0, 0xCC, + 0x6C, 0x61, 0x8F, 0x10, 0x63, 0x8C, 0x00, 0xE3, 0x00, 0x38, 0xC0, 0x0F, + 0x10, 0x63, 0xC6, 0x18, 0x90, 0xFC, 0x66, 0x1E, 0x30, 0xC0, 0x1C, 0x1C, + 0x0E, 0x01, 0xFE, 0x00, 0x08, 0x00, 0x39, 0xDB, 0x10, 0x67, 0x50, 0xA3, + 0x7F, 0x01, 0xFF, 0xF8, 0x00, 0x18, 0xDC, 0xF8, 0xC8, 0x47, 0x31, 0xCE, + 0x23, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, + 0xFC, 0x03, 0xE0, 0x03, 0xFF, 0x01, 0x80, 0xE0, 0xC0, 0x0C, 0x67, 0xF1, + 0xB1, 0x8E, 0x6C, 0x61, 0x8F, 0x18, 0x63, 0x86, 0x38, 0xE1, 0xFC, 0x38, + 0x61, 0x8F, 0x18, 0x63, 0xC6, 0x18, 0x91, 0x86, 0x66, 0x60, 0xF0, 0xC0, + 0x1C, 0x1C, 0x0E, 0x01, 0xFE, 0x00, 0x08, 0x00, 0xFF, 0xF0, 0x7D, 0x8A, + 0x1C, 0x38, 0x7F, 0x8E, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x00, + 0x00, 0x00, 0xFF, 0xF0, 0x3C, 0x66, 0x43, 0x43, 0x02, 0x0E, 0x38, 0x60, + 0x40, 0xFF, 0x3C, 0x66, 0x42, 0x02, 0x1E, 0x1E, 0x03, 0xC3, 0x43, 0x7E, + 0x00, 0x08, 0xC0, 0x6C, 0x01, 0xC0, 0x00, 0x0F, 0xFF, 0xFF, 0xFC, 0x00, + 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x03, 0x80, + 0x38, 0x03, 0x80, 0x38, 0x01, 0x80, 0x1C, 0x01, 0xC0, 0x0F, 0xFF, 0xFF, + 0xFC, 0xC0, 0xD8, 0x1B, 0x03, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x36, 0x06, + 0xC1, 0xD8, 0x3B, 0x07, 0x71, 0xEF, 0xEF, 0xA0, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x00, 0x03, 0xF3, 0xFF, 0x7E, 0x47, 0xE4, 0xFE, 0x4F, 0xE4, 0xFE, + 0x4F, 0xE4, 0x7E, 0x47, 0xE4, 0x3E, 0x40, 0xE4, 0x06, 0x40, 0x64, 0x06, + 0x40, 0x64, 0x06, 0x40, 0x64, 0x06, 0x40, 0x64, 0x06, 0x40, 0x64, 0xFF, + 0x80, 0x21, 0x0C, 0xC1, 0xE0, 0x30, 0x00, 0x3F, 0xFF, 0xFC, 0x06, 0x03, + 0x81, 0xC0, 0xE0, 0x30, 0x18, 0x0C, 0x07, 0x03, 0x80, 0xFF, 0xFF, 0xF0, + 0x33, 0xF3, 0x33, 0x33, 0x33, 0x38, 0xDB, 0x1C, 0x38, 0x70, 0xF1, 0x3E, + 0x01, 0xFF, 0xF8, 0xC4, 0x73, 0x8C, 0xE2, 0x13, 0x1F, 0x3B, 0x18, 0x00, + 0x07, 0x8F, 0xFC, 0x7F, 0xBF, 0xF3, 0x87, 0xC0, 0x1C, 0x0F, 0x00, 0x60, + 0x1C, 0x01, 0x80, 0x30, 0x0E, 0x00, 0xC0, 0x30, 0x03, 0x00, 0xC0, 0x0F, + 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0xC0, 0x30, 0x03, 0x00, 0xE0, 0x0C, 0x01, + 0x80, 0x30, 0x06, 0x01, 0xC0, 0x1C, 0x0F, 0x00, 0x3F, 0xEF, 0xFC, 0x3F, + 0x3F, 0xF0, 0x1F, 0x07, 0x83, 0xF9, 0xFE, 0x71, 0xF8, 0x7E, 0x0F, 0x03, + 0xC0, 0x60, 0x3C, 0x06, 0x03, 0xC0, 0x7F, 0xFC, 0x06, 0x00, 0xC0, 0x60, + 0x0C, 0x07, 0x03, 0x60, 0xF0, 0x77, 0xBF, 0xCE, 0x3F, 0x9F, 0xC0, 0x40, + 0x20, 0x06, 0x60, 0x06, 0x60, 0x00, 0x00, 0xE0, 0x07, 0x70, 0x06, 0x30, + 0x0E, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, 0x0E, 0x30, 0x06, 0x70, 0x07, + 0x60, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x03, 0x00, 0xC0, 0x00, + 0x00, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0xC0, 0xF0, + 0x3C, 0x0F, 0x86, 0x7F, 0x87, 0x80, 0x07, 0x00, 0x03, 0x00, 0x01, 0x80, + 0x00, 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x60, + 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, + 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, + 0x60, 0x07, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x01, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, + 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, + 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, 0x03, 0xC0, + 0x03, 0xC0, 0x06, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, + 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, + 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, 0x07, 0xB0, 0x0D, 0xE0, 0x00, 0x00, + 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, + 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, + 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, + 0x06, 0x60, 0x06, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, + 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, + 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, 0x03, 0xC0, 0x03, 0x40, 0x06, 0x60, + 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, + 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, + 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, + 0x60, 0x06, 0x60, 0x07, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x06, 0x60, + 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0xE3, 0x00, 0x01, 0x86, 0x00, + 0x03, 0x0C, 0x00, 0x0C, 0x1F, 0xFC, 0x18, 0x3F, 0xF8, 0x70, 0x60, 0x00, + 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x0C, 0x06, 0x00, 0x38, + 0x0C, 0x00, 0x60, 0x1F, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xC0, 0x1F, 0xF0, + 0xF0, 0xE1, 0x80, 0xE7, 0x00, 0xEC, 0x01, 0xF8, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, 0x00, 0x6C, 0x01, 0xDC, 0x03, + 0x9C, 0x0E, 0x1F, 0x78, 0x1F, 0xE0, 0x04, 0x00, 0x0C, 0x00, 0x0C, 0x00, + 0x18, 0x01, 0xF0, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x80, 0x00, 0x0F, 0xFF, + 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0F, + 0xFF, 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0F, 0xFF, 0xFF, 0xFC, 0x03, 0x80, 0x18, 0x01, 0x80, 0x00, 0x0F, 0xFF, + 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0F, + 0xFF, 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0F, 0xFF, 0xFF, 0xFC, 0x07, 0x00, 0x6C, 0x06, 0x60, 0x00, 0x0F, 0xFF, + 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0F, + 0xFF, 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0F, 0xFF, 0xFF, 0xFC, 0x1D, 0xC0, 0xEE, 0x00, 0x01, 0xFF, 0xEF, 0xFF, + 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xFF, 0xEF, + 0xFF, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xFF, + 0xFF, 0xFF, 0x80, 0xE1, 0x84, 0x13, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, + 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0x33, 0x30, 0x0E, 0x73, 0x9C, 0xE7, 0x39, + 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x70, 0x38, 0xD9, 0x14, 0x03, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x00, 0xEF, 0xDC, 0x01, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, + 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x80, 0x3F, 0x80, + 0x3F, 0xF8, 0x30, 0x7C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x06, 0x30, 0x07, + 0x30, 0x03, 0xFF, 0x03, 0xFF, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x07, + 0x30, 0x06, 0x30, 0x0E, 0x30, 0x1C, 0x3F, 0xF8, 0x3F, 0xF0, 0x0C, 0x40, + 0x7F, 0x01, 0x08, 0x30, 0x07, 0xE0, 0x1F, 0xC0, 0x7F, 0x01, 0xFE, 0x07, + 0xD8, 0x1F, 0x30, 0x7C, 0xE1, 0xF1, 0x87, 0xC3, 0x1F, 0x0E, 0x7C, 0x19, + 0xF0, 0x77, 0xC0, 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xC0, 0x1C, 0x07, + 0x00, 0x00, 0xC0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xC0, + 0xF8, 0xF0, 0x70, 0x1C, 0x70, 0x07, 0x30, 0x01, 0xB8, 0x00, 0xD8, 0x00, + 0x7C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0x30, + 0x01, 0x9C, 0x01, 0xC7, 0x01, 0xC1, 0xF7, 0xC0, 0x7F, 0xC0, 0x02, 0x00, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7F, + 0xC0, 0xF8, 0xF0, 0x70, 0x1C, 0x70, 0x07, 0x30, 0x01, 0xB8, 0x00, 0xD8, + 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, + 0x30, 0x01, 0x9C, 0x01, 0xC7, 0x01, 0xC1, 0xF7, 0xC0, 0x7F, 0xC0, 0x02, + 0x00, 0x01, 0xC0, 0x01, 0xB0, 0x01, 0x88, 0x00, 0x00, 0x00, 0x3E, 0x00, + 0x7F, 0xC0, 0xF8, 0xF0, 0x70, 0x1C, 0x70, 0x07, 0x30, 0x01, 0xB8, 0x00, + 0xD8, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0xE0, + 0x03, 0x30, 0x01, 0x9C, 0x01, 0xC7, 0x01, 0xC1, 0xF7, 0xC0, 0x7F, 0xC0, + 0x02, 0x00, 0x07, 0xB0, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, + 0x81, 0xF1, 0xE0, 0xE0, 0x38, 0xE0, 0x0E, 0x60, 0x03, 0x70, 0x01, 0xB0, + 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0xC0, 0x06, + 0x60, 0x03, 0x38, 0x03, 0x8E, 0x03, 0x83, 0xEF, 0x80, 0xFF, 0x80, 0x04, + 0x00, 0x07, 0x70, 0x03, 0xB8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, 0x81, + 0xF1, 0xE0, 0xE0, 0x38, 0xE0, 0x0E, 0x60, 0x03, 0x70, 0x01, 0xB0, 0x00, + 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0xC0, 0x06, 0x60, + 0x03, 0x38, 0x03, 0x8E, 0x03, 0x83, 0xEF, 0x80, 0xFF, 0x80, 0x04, 0x00, + 0x40, 0x98, 0x63, 0x30, 0x78, 0x0C, 0x07, 0x83, 0x31, 0x86, 0x40, 0x80, + 0x03, 0xC1, 0x87, 0xFD, 0x8F, 0x8F, 0x86, 0x01, 0xC7, 0x00, 0xF7, 0x00, + 0xDB, 0x00, 0xCD, 0x80, 0xC7, 0xC0, 0xC3, 0xE0, 0xC1, 0xF0, 0xC0, 0xF8, + 0xC0, 0x7E, 0xC0, 0x33, 0xC0, 0x19, 0xC0, 0x18, 0x70, 0x1C, 0x5F, 0x7C, + 0x67, 0xFC, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x0C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF8, 0x06, + 0xC0, 0x77, 0xDF, 0x1F, 0xF0, 0x08, 0x00, 0x01, 0xC0, 0x18, 0x00, 0x80, + 0x08, 0x0C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, + 0xF8, 0x06, 0xC0, 0x77, 0xDF, 0x1F, 0xF0, 0x08, 0x00, 0x07, 0x00, 0x2C, + 0x03, 0x30, 0x00, 0x0C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, + 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x1E, 0x00, 0xF8, 0x06, 0xC0, 0x77, 0xDF, 0x1F, 0xF0, 0x08, 0x00, 0x0C, + 0xC0, 0x66, 0x00, 0x01, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xC0, 0x1F, 0x00, 0xD8, 0x0E, 0xFB, 0xE3, 0xFE, 0x01, 0x00, 0x00, + 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x07, 0x70, 0x06, 0x30, + 0x0E, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, 0x0E, 0x30, 0x06, 0x70, 0x07, + 0x60, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xC0, 0x06, 0x00, 0x30, 0x01, + 0xFE, 0x0F, 0xFE, 0x60, 0x7B, 0x00, 0xD8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, + 0x0D, 0x83, 0xEF, 0xFE, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x00, 0x7F, 0x8F, 0x3C, 0xC0, 0xEC, 0x06, 0xC0, 0x6C, 0x0E, 0xC1, 0xCC, + 0x78, 0xC7, 0xEC, 0x06, 0xC0, 0x7C, 0x07, 0xC0, 0x7C, 0x06, 0xC0, 0x6C, + 0xFC, 0xCF, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x1F, 0x07, 0xFC, + 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, + 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, 0x03, 0x00, 0x60, 0x0C, 0x00, 0x00, + 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xC7, 0x8C, + 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, 0x0E, 0x01, 0xB0, + 0x11, 0x80, 0x00, 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, + 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, + 0x1C, 0x83, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, + 0x00, 0xC0, 0x1C, 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, + 0x7E, 0x70, 0x02, 0x3B, 0x83, 0xB8, 0x00, 0x00, 0x00, 0x1F, 0x07, 0xFC, + 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, + 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, 0x04, 0x00, 0xF0, 0x19, 0x01, 0xB0, + 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, + 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, + 0x1F, 0x0F, 0x0F, 0xF7, 0xF9, 0x83, 0xC3, 0xB0, 0x70, 0x30, 0x0C, 0x06, + 0x03, 0x80, 0xCF, 0xFF, 0xFB, 0xC6, 0x00, 0xE0, 0xC0, 0x18, 0x1C, 0x0F, + 0x03, 0x83, 0xF1, 0xDC, 0xE7, 0xE3, 0xF8, 0x00, 0x08, 0x00, 0x1F, 0x0F, + 0xE6, 0x1F, 0x83, 0xC0, 0xF0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x3E, 0x0D, + 0xC7, 0x3F, 0x83, 0x00, 0xC0, 0x0C, 0x03, 0x0F, 0x80, 0x38, 0x03, 0x80, + 0x30, 0x03, 0x00, 0x00, 0x1E, 0x0F, 0xF3, 0x86, 0x60, 0x78, 0x0F, 0x01, + 0xFF, 0xFC, 0x01, 0x80, 0x30, 0x1B, 0x07, 0x79, 0xC7, 0xF0, 0x10, 0x00, + 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0x1E, 0x0F, 0xF3, 0x86, 0x60, + 0x78, 0x0F, 0x01, 0xFF, 0xFC, 0x01, 0x80, 0x30, 0x1B, 0x07, 0x79, 0xC7, + 0xF0, 0x10, 0x00, 0x0F, 0x03, 0x60, 0x66, 0x00, 0x00, 0xF0, 0x7F, 0x9C, + 0x33, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xE0, 0x0C, 0x01, 0x80, 0xD8, 0x3B, + 0xCE, 0x3F, 0x80, 0x80, 0x19, 0x83, 0x30, 0x00, 0x00, 0x00, 0xF0, 0x7F, + 0x9C, 0x33, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xE0, 0x0C, 0x01, 0x80, 0xD8, + 0x3B, 0xCE, 0x3F, 0x80, 0x80, 0xE3, 0x0C, 0x30, 0x18, 0xC6, 0x31, 0x8C, + 0x63, 0x18, 0xC6, 0x31, 0x80, 0x39, 0x99, 0x80, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x30, 0xF1, 0xB6, 0x20, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xCF, 0x30, 0x00, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0x20, 0x07, + 0xE0, 0x70, 0x3F, 0x00, 0x30, 0x3F, 0x0F, 0xF3, 0x8E, 0xE0, 0xF8, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1B, 0x07, 0x7B, 0xC7, 0xF0, 0x10, + 0x00, 0x39, 0x1F, 0xC4, 0x20, 0x00, 0xCF, 0x3F, 0xEE, 0x1F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xC0, 0x38, + 0x03, 0x00, 0x30, 0x03, 0x00, 0x00, 0x3E, 0x0F, 0xE3, 0x8E, 0xE0, 0xF8, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1B, 0x07, 0x7B, 0xC7, 0xF0, + 0x10, 0x00, 0x03, 0x80, 0xE0, 0x18, 0x06, 0x00, 0x00, 0x3E, 0x0F, 0xE3, + 0x8E, 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1B, 0x07, + 0x7B, 0xC7, 0xF0, 0x10, 0x00, 0x0E, 0x01, 0xC0, 0x6C, 0x18, 0xC0, 0x00, + 0x3E, 0x0F, 0xE3, 0x8E, 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x1B, 0x07, 0x7B, 0xC7, 0xF0, 0x10, 0x00, 0x1C, 0x87, 0xF0, 0x00, + 0x00, 0x01, 0xF0, 0x7F, 0x1C, 0x77, 0x07, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x3C, 0x07, 0x80, 0xD8, 0x3B, 0xDE, 0x3F, 0x80, 0x80, 0x3B, 0x87, 0x70, + 0xEE, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0xE3, 0x8E, 0xE0, 0xF8, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1B, 0x07, 0x7B, 0xC7, 0xF0, 0x10, 0x00, + 0x06, 0x00, 0x60, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x0F, 0x80, 0xFE, 0x8E, 0x38, 0xE0, 0xE6, + 0x0B, 0x30, 0x99, 0x8C, 0xCC, 0xC6, 0x6C, 0x33, 0x41, 0x8C, 0x1C, 0x79, + 0xC5, 0xFC, 0x01, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x00, 0x30, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1F, 0x07, + 0xE3, 0xDF, 0xB1, 0x00, 0x07, 0x03, 0x80, 0xC0, 0x60, 0x00, 0x30, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1F, 0x07, + 0xE3, 0xDF, 0xB1, 0x00, 0x1C, 0x07, 0x03, 0x60, 0x8C, 0x00, 0x30, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1F, 0x07, + 0xE3, 0xDF, 0xB1, 0x00, 0x77, 0x1D, 0xC7, 0x70, 0x00, 0x00, 0x30, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1F, 0x07, + 0xE3, 0xDF, 0xB1, 0x00, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0xC0, + 0xD8, 0x1B, 0x03, 0x30, 0xC6, 0x18, 0xC7, 0x0C, 0xC1, 0x98, 0x37, 0x03, + 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x18, 0x06, 0x00, 0xC0, 0xF0, 0x1E, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xCF, 0x0D, 0xFC, 0xF0, 0xCE, 0x06, + 0xE0, 0x6C, 0x06, 0xC0, 0x7C, 0x07, 0xC0, 0x6E, 0x06, 0xE0, 0xEF, 0x9C, + 0xDF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x19, 0x83, 0x30, + 0x66, 0x00, 0x00, 0x00, 0xC0, 0xD8, 0x1B, 0x03, 0x30, 0xC6, 0x18, 0xC7, + 0x0C, 0xC1, 0x98, 0x37, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x18, 0x06, + 0x00, 0xC0, 0xF0, 0x1E, 0x00 }; + +const GFXglyph FreeSans12pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 7, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 2, 18, 7, 3, -17 }, // 0x21 '!' U+0021 + { 6, 6, 6, 9, 1, -16 }, // 0x22 '"' U+0022 + { 11, 13, 17, 13, 0, -16 }, // 0x23 '#' U+0023 + { 39, 11, 21, 13, 1, -17 }, // 0x24 '$' U+0024 + { 68, 20, 17, 21, 1, -16 }, // 0x25 '%' U+0025 + { 111, 14, 18, 16, 1, -16 }, // 0x26 '&' U+0026 + { 143, 2, 6, 5, 1, -16 }, // 0x27 ''' U+0027 + { 145, 5, 23, 8, 2, -17 }, // 0x28 '(' U+0028 + { 160, 5, 23, 8, 1, -17 }, // 0x29 ')' U+0029 + { 175, 7, 7, 9, 1, -17 }, // 0x2a '*' U+002A + { 182, 12, 11, 14, 1, -10 }, // 0x2b '+' U+002B + { 199, 3, 7, 7, 2, -2 }, // 0x2c ',' U+002C + { 202, 6, 1, 8, 1, -6 }, // 0x2d '-' U+002D + { 203, 3, 3, 7, 2, -2 }, // 0x2e '.' U+002E + { 205, 7, 18, 7, 0, -17 }, // 0x2f '/' U+002F + { 221, 11, 18, 13, 1, -16 }, // 0x30 '0' U+0030 + { 246, 6, 17, 13, 2, -16 }, // 0x31 '1' U+0031 + { 259, 11, 17, 13, 1, -16 }, // 0x32 '2' U+0032 + { 283, 11, 18, 13, 1, -16 }, // 0x33 '3' U+0033 + { 308, 11, 17, 13, 1, -16 }, // 0x34 '4' U+0034 + { 332, 11, 18, 13, 1, -16 }, // 0x35 '5' U+0035 + { 357, 11, 18, 13, 1, -16 }, // 0x36 '6' U+0036 + { 382, 11, 17, 13, 1, -16 }, // 0x37 '7' U+0037 + { 406, 11, 18, 13, 1, -16 }, // 0x38 '8' U+0038 + { 431, 11, 18, 13, 1, -16 }, // 0x39 '9' U+0039 + { 456, 2, 13, 7, 3, -12 }, // 0x3a ':' U+003A + { 460, 2, 17, 7, 3, -12 }, // 0x3b ';' U+003B + { 465, 12, 11, 14, 1, -10 }, // 0x3c '<' U+003C + { 482, 12, 5, 14, 1, -7 }, // 0x3d '=' U+003D + { 490, 12, 11, 14, 1, -10 }, // 0x3e '>' U+003E + { 507, 10, 18, 13, 2, -17 }, // 0x3f '?' U+003F + { 530, 22, 21, 24, 1, -17 }, // 0x40 '@' U+0040 + { 588, 16, 18, 16, 0, -17 }, // 0x41 'A' U+0041 + { 624, 13, 18, 16, 2, -17 }, // 0x42 'B' U+0042 + { 654, 15, 19, 17, 1, -17 }, // 0x43 'C' U+0043 + { 690, 14, 18, 17, 2, -17 }, // 0x44 'D' U+0044 + { 722, 13, 18, 16, 2, -17 }, // 0x45 'E' U+0045 + { 752, 12, 18, 15, 2, -17 }, // 0x46 'F' U+0046 + { 779, 16, 19, 19, 1, -17 }, // 0x47 'G' U+0047 + { 817, 13, 18, 17, 2, -17 }, // 0x48 'H' U+0048 + { 847, 3, 18, 7, 2, -17 }, // 0x49 'I' U+0049 + { 854, 10, 19, 12, 0, -17 }, // 0x4a 'J' U+004A + { 878, 14, 18, 16, 2, -17 }, // 0x4b 'K' U+004B + { 910, 11, 18, 13, 2, -17 }, // 0x4c 'L' U+004C + { 935, 16, 18, 20, 2, -17 }, // 0x4d 'M' U+004D + { 971, 14, 18, 17, 2, -17 }, // 0x4e 'N' U+004E + { 1003, 17, 19, 19, 1, -17 }, // 0x4f 'O' U+004F + { 1044, 13, 18, 16, 2, -17 }, // 0x50 'P' U+0050 + { 1074, 17, 19, 19, 1, -17 }, // 0x51 'Q' U+0051 + { 1115, 14, 18, 17, 2, -17 }, // 0x52 'R' U+0052 + { 1147, 14, 19, 16, 1, -17 }, // 0x53 'S' U+0053 + { 1181, 14, 18, 15, 0, -17 }, // 0x54 'T' U+0054 + { 1213, 13, 19, 17, 2, -17 }, // 0x55 'U' U+0055 + { 1244, 14, 18, 16, 1, -17 }, // 0x56 'V' U+0056 + { 1276, 21, 18, 23, 1, -17 }, // 0x57 'W' U+0057 + { 1324, 15, 18, 16, 1, -17 }, // 0x58 'X' U+0058 + { 1358, 16, 18, 16, 0, -17 }, // 0x59 'Y' U+0059 + { 1394, 13, 18, 15, 1, -17 }, // 0x5a 'Z' U+005A + { 1424, 4, 23, 7, 2, -17 }, // 0x5b '[' U+005B + { 1436, 7, 18, 7, 0, -17 }, // 0x5c '\' U+005C + { 1452, 4, 23, 7, 1, -17 }, // 0x5d ']' U+005D + { 1464, 9, 9, 11, 1, -16 }, // 0x5e '^' U+005E + { 1475, 15, 1, 13, -1, 4 }, // 0x5f '_' U+005F + { 1477, 5, 4, 8, 1, -17 }, // 0x60 '`' U+0060 + { 1480, 12, 14, 13, 1, -12 }, // 0x61 'a' U+0061 + { 1501, 12, 19, 13, 1, -17 }, // 0x62 'b' U+0062 + { 1530, 10, 14, 12, 1, -12 }, // 0x63 'c' U+0063 + { 1548, 11, 19, 13, 1, -17 }, // 0x64 'd' U+0064 + { 1575, 11, 14, 13, 1, -12 }, // 0x65 'e' U+0065 + { 1595, 6, 18, 7, 0, -17 }, // 0x66 'f' U+0066 + { 1609, 11, 18, 13, 1, -12 }, // 0x67 'g' U+0067 + { 1634, 10, 18, 13, 2, -17 }, // 0x68 'h' U+0068 + { 1657, 2, 18, 5, 2, -17 }, // 0x69 'i' U+0069 + { 1662, 4, 23, 5, 0, -17 }, // 0x6a 'j' U+006A + { 1674, 11, 18, 12, 1, -17 }, // 0x6b 'k' U+006B + { 1699, 2, 18, 5, 2, -17 }, // 0x6c 'l' U+006C + { 1704, 16, 13, 20, 2, -12 }, // 0x6d 'm' U+006D + { 1730, 10, 13, 13, 2, -12 }, // 0x6e 'n' U+006E + { 1747, 11, 14, 13, 1, -12 }, // 0x6f 'o' U+006F + { 1767, 12, 18, 13, 1, -12 }, // 0x70 'p' U+0070 + { 1794, 11, 18, 13, 1, -12 }, // 0x71 'q' U+0071 + { 1819, 6, 13, 8, 2, -12 }, // 0x72 'r' U+0072 + { 1829, 10, 14, 12, 1, -12 }, // 0x73 's' U+0073 + { 1847, 6, 17, 7, 0, -15 }, // 0x74 't' U+0074 + { 1860, 10, 14, 13, 2, -12 }, // 0x75 'u' U+0075 + { 1878, 12, 13, 12, 0, -12 }, // 0x76 'v' U+0076 + { 1898, 17, 13, 17, 0, -12 }, // 0x77 'w' U+0077 + { 1926, 11, 13, 12, 0, -12 }, // 0x78 'x' U+0078 + { 1944, 11, 18, 12, 0, -12 }, // 0x79 'y' U+0079 + { 1969, 10, 13, 12, 1, -12 }, // 0x7a 'z' U+007A + { 1986, 6, 23, 8, 1, -17 }, // 0x7b '{' U+007B + { 2004, 2, 23, 6, 2, -17 }, // 0x7c '|' U+007C + { 2010, 5, 23, 8, 1, -17 }, // 0x7d '}' U+007D + { 2025, 10, 5, 14, 2, -10 }, // 0x7e '~' U+007E + { 2032, 13, 18, 17, 2, -17 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 2062, 1, 1, 7, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 2063, 2, 18, 7, 3, -12 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 2068, 11, 18, 13, 1, -14 }, // 0x82 'CENT SIGN' U+00A2 + { 2093, 12, 19, 13, 1, -17 }, // 0x83 'POUND SIGN' U+00A3 + { 2122, 14, 18, 16, 1, -16 }, // 0x84 'EURO SIGN *' U+20AC + { 2154, 13, 17, 13, 0, -16 }, // 0x85 'YEN SIGN' U+00A5 + { 2182, 14, 23, 16, 1, -21 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 2223, 11, 23, 13, 1, -17 }, // 0x87 'SECTION SIGN' U+00A7 + { 2255, 10, 19, 12, 1, -17 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 2279, 18, 19, 18, 0, -17 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 2322, 7, 11, 9, 1, -17 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 2332, 9, 8, 11, 1, -10 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 2341, 12, 7, 14, 1, -8 }, // 0x8c 'NOT SIGN' U+00AC + { 2352, 6, 1, 8, 1, -6 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 2353, 18, 19, 18, 0, -17 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 2396, 6, 2, 8, 1, -16 }, // 0x8f 'MACRON' U+00AF + { 2398, 7, 7, 15, 4, -15 }, // 0x90 'DEGREE SIGN' U+00B0 + { 2405, 12, 15, 14, 1, -14 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 2428, 8, 10, 8, 0, -16 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 2438, 8, 11, 8, 0, -16 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 2449, 13, 22, 15, 1, -21 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 2485, 11, 18, 13, 2, -12 }, // 0x95 'MICRO SIGN' U+00B5 + { 2510, 12, 22, 13, 1, -17 }, // 0x96 'PILCROW SIGN' U+00B6 + { 2543, 3, 3, 7, 2, -7 }, // 0x97 'MIDDLE DOT' U+00B7 + { 2545, 10, 18, 12, 1, -17 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 2568, 4, 10, 8, 2, -16 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 2573, 7, 11, 9, 1, -17 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 2583, 9, 8, 11, 1, -9 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 2592, 22, 18, 24, 1, -17 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 2642, 20, 14, 23, 1, -12 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 2677, 16, 21, 16, 0, -20 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 2719, 10, 18, 13, 3, -12 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 2742, 16, 22, 16, 0, -21 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 2786, 16, 22, 16, 0, -21 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 2830, 16, 22, 16, 0, -21 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 2874, 16, 21, 16, 0, -20 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 2916, 16, 21, 16, 0, -20 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 2958, 16, 23, 16, 0, -22 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 3004, 23, 18, 24, 0, -17 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 3056, 15, 23, 17, 1, -17 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 3100, 13, 22, 16, 2, -21 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 3136, 13, 22, 16, 2, -21 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 3172, 13, 22, 16, 2, -21 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 3208, 13, 21, 16, 2, -20 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 3243, 5, 22, 7, 0, -21 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 3257, 5, 22, 7, 2, -21 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 3271, 7, 22, 7, 0, -21 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 3291, 7, 21, 7, 0, -20 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 3310, 16, 18, 17, 0, -17 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 3346, 14, 21, 17, 2, -20 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 3383, 17, 23, 19, 1, -21 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 3432, 17, 23, 19, 1, -21 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 3481, 17, 23, 19, 1, -21 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 3530, 17, 22, 19, 1, -20 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 3577, 17, 22, 19, 1, -20 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 3624, 10, 9, 14, 2, -9 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 3636, 17, 19, 19, 1, -17 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 3677, 13, 23, 17, 2, -21 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 3715, 13, 23, 17, 2, -21 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 3753, 13, 23, 17, 2, -21 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 3791, 13, 22, 17, 2, -20 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 3827, 16, 22, 16, 0, -21 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 3871, 13, 18, 16, 2, -17 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 3901, 12, 17, 15, 2, -16 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 3927, 12, 18, 13, 1, -16 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 3954, 12, 18, 13, 1, -16 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 3981, 12, 18, 13, 1, -16 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 4008, 12, 18, 13, 1, -16 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 4035, 12, 18, 13, 1, -16 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 4062, 12, 20, 13, 1, -18 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 4092, 19, 14, 22, 1, -12 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 4126, 10, 18, 12, 1, -12 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 4149, 11, 19, 13, 1, -17 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 4176, 11, 19, 13, 1, -17 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 4203, 11, 18, 13, 1, -16 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 4228, 11, 18, 13, 1, -16 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 4253, 5, 18, 6, 0, -17 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 4265, 5, 18, 6, 1, -17 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 4277, 7, 18, 6, 0, -17 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 4293, 6, 17, 6, 0, -16 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 4306, 11, 19, 13, 1, -17 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 4333, 10, 17, 13, 2, -16 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 4355, 11, 19, 13, 1, -17 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 4382, 11, 19, 13, 1, -17 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 4409, 11, 19, 13, 1, -17 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 4436, 11, 18, 13, 1, -16 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 4461, 11, 19, 13, 1, -17 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 4488, 12, 11, 14, 1, -10 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 4505, 13, 14, 15, 0, -12 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 4528, 10, 19, 13, 2, -17 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 4552, 10, 19, 13, 2, -17 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 4576, 10, 19, 13, 2, -17 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 4600, 10, 19, 13, 2, -17 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 4624, 11, 23, 12, 0, -17 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 4656, 12, 22, 13, 1, -16 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 4689, 11, 23, 12, 0, -17 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeSans12pt8b PROGMEM = { + (uint8_t *)FreeSans12pt8bBitmaps, + (GFXglyph *)FreeSans12pt8bGlyphs, + 0x20, 0xDF, 33 }; + +// Approx. 6072 bytes diff --git a/RX_FSK/src/fonts/FreeSans18pt8b.h b/RX_FSK/src/fonts/FreeSans18pt8b.h new file mode 100644 index 0000000..53ec130 --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans18pt8b.h @@ -0,0 +1,1030 @@ +const uint8_t FreeSans18pt8bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x6D, 0xB0, 0x3F, 0xFC, 0xE7, + 0xF3, 0xF9, 0xFC, 0xFE, 0x3F, 0x1B, 0x8C, 0x86, 0x43, 0x00, 0x01, 0xC3, + 0x80, 0x38, 0x70, 0x06, 0x0C, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, + 0x0F, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, + 0x03, 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x01, 0x83, 0x07, 0xFF, 0xFE, + 0xFF, 0xFF, 0xC1, 0xC3, 0x80, 0x38, 0x70, 0x06, 0x0C, 0x01, 0xC3, 0x80, + 0x38, 0x70, 0x07, 0x0E, 0x00, 0xE1, 0xC0, 0x18, 0x30, 0x00, 0x01, 0xC0, + 0x00, 0xE0, 0x01, 0xFC, 0x03, 0xFF, 0x83, 0xFF, 0xE3, 0xCE, 0x79, 0xC7, + 0x1C, 0xE3, 0x8E, 0x61, 0xC3, 0x38, 0xE0, 0x1C, 0x70, 0x0F, 0x38, 0x03, + 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xF0, 0x07, 0xFC, 0x01, 0xFF, 0x00, 0xE3, + 0xC0, 0x70, 0xE0, 0x38, 0x7E, 0x1C, 0x3F, 0x0E, 0x1F, 0x87, 0x0E, 0xE3, + 0x8F, 0x79, 0xCF, 0x1F, 0xFF, 0x07, 0xFF, 0x00, 0x7E, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, 0x60, 0x0F, + 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x30, 0x07, 0x0E, 0x03, 0x00, 0x70, 0x38, + 0x38, 0x03, 0x01, 0xC1, 0x80, 0x18, 0x0E, 0x1C, 0x00, 0xE0, 0x70, 0xC0, + 0x03, 0x07, 0x0E, 0x00, 0x1F, 0xF8, 0x60, 0x00, 0x7F, 0x87, 0x00, 0x00, + 0xF0, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x3F, 0x00, 0x01, + 0x83, 0xFC, 0x00, 0x1C, 0x3C, 0x70, 0x00, 0xC1, 0x81, 0xC0, 0x0E, 0x1C, + 0x0E, 0x00, 0x60, 0xE0, 0x30, 0x07, 0x07, 0x01, 0x80, 0x30, 0x38, 0x1C, + 0x03, 0x80, 0xE1, 0xC0, 0x18, 0x07, 0xFE, 0x01, 0x80, 0x0F, 0xE0, 0x0C, + 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xC1, + 0xC0, 0x1C, 0x1C, 0x01, 0xC0, 0xC0, 0x1C, 0x1C, 0x01, 0xC1, 0xC0, 0x1E, + 0x3C, 0x00, 0xF7, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x03, + 0xFE, 0x1C, 0x78, 0xF1, 0xC7, 0x07, 0x9C, 0xE0, 0x39, 0xCE, 0x03, 0xF8, + 0xE0, 0x1F, 0x8E, 0x00, 0xF0, 0xE0, 0x0F, 0x8F, 0x01, 0xF8, 0x78, 0x3D, + 0xC7, 0xFF, 0x9E, 0x3F, 0xF0, 0xF0, 0x78, 0x00, 0xFF, 0xFF, 0xF6, 0x40, + 0x06, 0x0C, 0x30, 0xE1, 0x87, 0x0C, 0x38, 0x70, 0xC3, 0x87, 0x0E, 0x1C, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, + 0x83, 0x83, 0x07, 0x06, 0x06, 0xC0, 0x60, 0x70, 0x30, 0x38, 0x18, 0x1C, + 0x0C, 0x0C, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, 0x38, 0x30, + 0x70, 0x60, 0x06, 0x00, 0xC0, 0x18, 0x23, 0x27, 0xFE, 0x7F, 0x83, 0x80, + 0xF8, 0x39, 0x86, 0x30, 0x40, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, + 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFF, 0x33, 0x36, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0x30, 0x18, 0x06, 0x01, 0x80, + 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, + 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, 0x01, 0x80, 0xC0, + 0x30, 0x0C, 0x00, 0x03, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x03, 0xC3, 0xC3, + 0x80, 0xE1, 0xC0, 0x79, 0xC0, 0x1C, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, + 0xDC, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1D, 0xC0, 0x0E, 0xE0, + 0x0F, 0x70, 0x07, 0xB8, 0x03, 0x9C, 0x01, 0xCE, 0x00, 0xE3, 0x80, 0xF1, + 0xC0, 0x70, 0x70, 0x78, 0x3F, 0xF8, 0x0F, 0xF8, 0x01, 0xF0, 0x00, 0x03, + 0x03, 0x07, 0x07, 0x1F, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x03, 0xE0, 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xE3, 0x80, 0x73, 0xC0, + 0x3D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0x80, 0x03, 0xC0, 0x01, 0xC0, + 0x01, 0xE0, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x0F, 0xC0, 0x0F, 0x80, + 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, + 0x07, 0x83, 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x0F, 0xF0, + 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x01, 0xF8, 0x00, 0xFC, 0x00, + 0xF7, 0x00, 0x73, 0x80, 0x79, 0xF0, 0x78, 0x7F, 0xFC, 0x1F, 0xF8, 0x01, + 0xF0, 0x00, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x0F, + 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0x78, 0x07, 0x3C, 0x03, 0x9E, 0x03, + 0x8F, 0x03, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xE1, 0xC0, 0xF1, 0xC0, 0x78, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x80, 0x03, 0xC0, 0x01, + 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1F, 0xFF, 0x0F, 0xFF, + 0x87, 0xFF, 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1B, 0xFC, 0x1F, 0xFF, 0x0F, 0xCF, 0xC7, 0x80, 0xF3, + 0x80, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, + 0xFC, 0x00, 0xF7, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, + 0xF8, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x03, 0xFE, 0x03, 0xFF, 0x83, 0xC3, + 0xC3, 0xC0, 0xF1, 0xC0, 0x39, 0xE0, 0x1C, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1C, 0xFE, 0x0F, 0xFF, 0xC7, 0xF3, 0xE7, 0xE0, 0x79, 0xE0, 0x1C, + 0xE0, 0x0F, 0x70, 0x03, 0xB8, 0x01, 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x80, + 0x71, 0xC0, 0x78, 0xF8, 0x78, 0x3F, 0xFC, 0x0F, 0xF8, 0x01, 0xF0, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x01, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0x83, 0xC3, 0x80, + 0xF3, 0xC0, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x07, 0x1C, 0x07, 0x07, + 0x8F, 0x81, 0xFF, 0x01, 0xFF, 0xC1, 0xF1, 0xF1, 0xE0, 0x3C, 0xE0, 0x0E, + 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x7B, 0xC0, + 0x38, 0xF0, 0x7C, 0x7F, 0xFC, 0x0F, 0xFC, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x07, 0xFC, 0x07, 0xFF, 0x07, 0x83, 0xC7, 0x80, 0xE3, 0x80, 0x39, 0xC0, + 0x1D, 0xE0, 0x0E, 0xE0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xF7, + 0x80, 0xF9, 0xF3, 0xFC, 0x7F, 0xEE, 0x1F, 0xC7, 0x00, 0x07, 0x80, 0x03, + 0x80, 0x01, 0xCE, 0x00, 0xE7, 0x00, 0xE3, 0xC0, 0x70, 0xF0, 0xF0, 0x3F, + 0xF8, 0x0F, 0xF0, 0x01, 0xE0, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, + 0xFC, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x26, + 0xC0, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0xE0, 0x0F, 0xE0, 0x1F, 0x80, + 0x3F, 0x00, 0xFE, 0x01, 0xF8, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x80, + 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0x00, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x3E, + 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x7E, + 0x00, 0x07, 0x80, 0x07, 0xC0, 0x0F, 0xC0, 0x3F, 0x00, 0x7E, 0x01, 0xFC, + 0x03, 0xF0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, + 0xFF, 0xE3, 0x81, 0xEE, 0x01, 0xDC, 0x03, 0xF8, 0x03, 0xF0, 0x07, 0x00, + 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, + 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x01, 0xF8, 0x07, + 0xE0, 0x03, 0xC0, 0x00, 0xF8, 0x07, 0x80, 0x00, 0x78, 0x0F, 0x00, 0x00, + 0x3C, 0x1E, 0x00, 0x00, 0x1E, 0x1C, 0x03, 0xF3, 0x8E, 0x38, 0x0F, 0xFB, + 0x8F, 0x38, 0x1E, 0x1B, 0x87, 0x70, 0x3C, 0x0F, 0x07, 0x70, 0x38, 0x0F, + 0x07, 0x60, 0x70, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xF0, 0x0E, + 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, + 0x0E, 0xF0, 0xF0, 0x3C, 0x1C, 0x70, 0x78, 0x7C, 0x3C, 0x70, 0x7D, 0xFE, + 0xF8, 0x78, 0x3F, 0xDF, 0xF0, 0x3C, 0x0F, 0x0F, 0xC0, 0x1E, 0x00, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x02, + 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x78, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, + 0x01, 0xFC, 0x00, 0x07, 0x78, 0x00, 0x1C, 0xE0, 0x00, 0xF3, 0x80, 0x03, + 0x8F, 0x00, 0x1E, 0x1C, 0x00, 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0F, 0x03, + 0x80, 0x38, 0x0E, 0x00, 0xE0, 0x3C, 0x07, 0x80, 0x70, 0x1F, 0xFF, 0xE0, + 0x7F, 0xFF, 0x83, 0xC0, 0x0E, 0x0E, 0x00, 0x3C, 0x38, 0x00, 0xF1, 0xE0, + 0x01, 0xC7, 0x00, 0x07, 0xBC, 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, + 0xF0, 0xFF, 0xC0, 0x1F, 0xFF, 0xC3, 0xFF, 0xFC, 0x70, 0x1F, 0xCE, 0x00, + 0x79, 0xC0, 0x07, 0xB8, 0x00, 0xF7, 0x00, 0x1E, 0xE0, 0x03, 0xDC, 0x00, + 0x73, 0x80, 0x1E, 0x7F, 0xFF, 0x8F, 0xFF, 0xC1, 0xFF, 0xFE, 0x38, 0x03, + 0xE7, 0x00, 0x1E, 0xE0, 0x01, 0xDC, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, + 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xB8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, + 0x1F, 0xFF, 0x80, 0x00, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, + 0xC0, 0xF8, 0x3C, 0x00, 0xF0, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x9C, 0x00, + 0x0E, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, + 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, + 0x00, 0x03, 0x80, 0x00, 0xFF, 0x00, 0x03, 0x9C, 0x00, 0x0E, 0x78, 0x00, + 0x78, 0xE0, 0x01, 0xC3, 0xE0, 0x0F, 0x07, 0xC0, 0xF8, 0x0F, 0xFF, 0xC0, + 0x0F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0xFF, + 0xFF, 0x0E, 0x01, 0xF8, 0xE0, 0x03, 0xCE, 0x00, 0x1E, 0xE0, 0x00, 0xEE, + 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, + 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0E, 0xE0, 0x01, 0xEE, 0x00, + 0x3C, 0xE0, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0F, + 0xFF, 0xF7, 0xFF, 0xFB, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, + 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x80, + 0x3F, 0xFF, 0x80, 0xF8, 0x0F, 0x83, 0xE0, 0x07, 0x87, 0x00, 0x07, 0x9E, + 0x00, 0x0F, 0x38, 0x00, 0x0E, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x01, 0xFF, 0xF8, 0x03, + 0xFF, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, + 0x3B, 0x80, 0x00, 0xF7, 0x80, 0x01, 0xE7, 0x80, 0x07, 0xCF, 0x80, 0x1F, + 0x8F, 0xC0, 0xF7, 0x0F, 0xFF, 0xCE, 0x07, 0xFF, 0x0C, 0x03, 0xF0, 0x00, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, + 0x00, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x3F, 0x80, 0xFF, 0x03, 0xBE, 0x1E, + 0x7F, 0xF0, 0xFF, 0x80, 0x78, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x1E, 0xE0, + 0x03, 0xCE, 0x00, 0x78, 0xE0, 0x0F, 0x0E, 0x01, 0xE0, 0xE0, 0x3C, 0x0E, + 0x07, 0x80, 0xE0, 0xF0, 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, + 0xEF, 0xE0, 0x0F, 0xEE, 0x00, 0xFC, 0xF0, 0x0F, 0x87, 0x80, 0xF0, 0x38, + 0x0E, 0x03, 0xC0, 0xE0, 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, + 0x78, 0xE0, 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x3F, + 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x77, 0xFC, 0x00, 0x77, + 0xEE, 0x00, 0x77, 0xEE, 0x00, 0xE7, 0xEE, 0x00, 0xE7, 0xE7, 0x00, 0xE7, + 0xE7, 0x01, 0xC7, 0xE7, 0x01, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x83, 0x87, + 0xE3, 0x83, 0x87, 0xE1, 0xC3, 0x87, 0xE1, 0xC7, 0x07, 0xE1, 0xC7, 0x07, + 0xE0, 0xE7, 0x07, 0xE0, 0xEE, 0x07, 0xE0, 0xEE, 0x07, 0xE0, 0x7E, 0x07, + 0xE0, 0x7C, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0x3C, 0x07, 0xE0, 0x00, 0x7F, + 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xFC, 0x00, 0x7F, 0xC0, 0x07, + 0xFE, 0x00, 0x7E, 0xF0, 0x07, 0xE7, 0x00, 0x7E, 0x78, 0x07, 0xE3, 0xC0, + 0x7E, 0x1C, 0x07, 0xE1, 0xE0, 0x7E, 0x0F, 0x07, 0xE0, 0x70, 0x7E, 0x07, + 0x87, 0xE0, 0x38, 0x7E, 0x01, 0xC7, 0xE0, 0x1E, 0x7E, 0x00, 0xE7, 0xE0, + 0x0F, 0x7E, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x3F, 0xE0, 0x01, 0xFE, + 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x01, + 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF0, 0xF0, 0x00, 0x38, + 0xF0, 0x00, 0x1E, 0x70, 0x00, 0x07, 0x38, 0x00, 0x03, 0xDC, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, + 0x0F, 0xE0, 0x00, 0x07, 0x70, 0x00, 0x07, 0xB8, 0x00, 0x03, 0xDE, 0x00, + 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0xE1, 0xF0, 0x00, 0xF0, 0x7C, + 0x00, 0xF0, 0x1F, 0x81, 0xF0, 0x07, 0xFF, 0xF0, 0x00, 0xFF, 0xE0, 0x00, + 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0xC3, 0xFF, 0xFE, 0x70, 0x0F, + 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, 0x77, 0x00, 0x0F, 0xE0, 0x01, + 0xFC, 0x00, 0x3B, 0x80, 0x0F, 0x70, 0x03, 0xEF, 0xFF, 0xF9, 0xFF, 0xFE, + 0x3F, 0xFF, 0x87, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, + 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF0, 0x01, + 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x03, 0xC1, 0xE0, 0x00, 0xF0, + 0xF0, 0x00, 0x38, 0xF0, 0x00, 0x1E, 0x70, 0x00, 0x07, 0x38, 0x00, 0x03, + 0xDC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x70, 0x00, 0x07, 0xB8, 0x00, + 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x31, 0xE3, 0xC0, 0x3C, 0xE1, 0xE0, + 0x0F, 0xF0, 0x7C, 0x03, 0xF0, 0x1F, 0x83, 0xF8, 0x07, 0xFF, 0xFE, 0x00, + 0xFF, 0xE7, 0x80, 0x0F, 0x81, 0xC0, 0x00, 0x00, 0x40, 0xFF, 0xF0, 0x07, + 0xFF, 0xFC, 0x3F, 0xFF, 0xF1, 0xE0, 0x0F, 0xCF, 0x00, 0x1E, 0x78, 0x00, + 0x7B, 0xC0, 0x03, 0xDE, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0x80, 0x07, 0x3C, + 0x00, 0x39, 0xE0, 0x03, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xFF, + 0x1E, 0x00, 0x78, 0xF0, 0x01, 0xE7, 0x80, 0x07, 0x3C, 0x00, 0x39, 0xE0, + 0x01, 0xCF, 0x00, 0x0E, 0x78, 0x00, 0x73, 0xC0, 0x03, 0x9E, 0x00, 0x1E, + 0xF0, 0x00, 0xF7, 0x80, 0x03, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x3F, + 0xFF, 0x83, 0xC0, 0x7C, 0x78, 0x03, 0xC7, 0x00, 0x1E, 0xF0, 0x00, 0xEF, + 0x00, 0x0E, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xFC, 0x00, + 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0x7E, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, + 0x0E, 0x78, 0x01, 0xE7, 0xE0, 0x7C, 0x3F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, + 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, + 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0xEF, + 0x00, 0x1E, 0x78, 0x01, 0xE3, 0xE0, 0x7C, 0x1F, 0xFF, 0x80, 0xFF, 0xE0, + 0x01, 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xE7, 0x00, 0x07, 0x9E, + 0x00, 0x1E, 0x78, 0x00, 0x70, 0xE0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, + 0x38, 0x1C, 0x01, 0xE0, 0x78, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0xF0, + 0x0F, 0x03, 0x80, 0x1C, 0x0E, 0x00, 0x70, 0x38, 0x01, 0xE1, 0xC0, 0x03, + 0x87, 0x00, 0x0E, 0x1C, 0x00, 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0xF0, 0x03, 0xC0, 0x0E, 0xF0, + 0x07, 0xC0, 0x1E, 0x70, 0x07, 0xC0, 0x1E, 0x70, 0x07, 0xC0, 0x1E, 0x78, + 0x0E, 0xE0, 0x1C, 0x78, 0x0E, 0xE0, 0x3C, 0x38, 0x0E, 0xE0, 0x3C, 0x38, + 0x0E, 0x70, 0x3C, 0x38, 0x1C, 0x70, 0x38, 0x3C, 0x1C, 0x70, 0x38, 0x1C, + 0x1C, 0x70, 0x78, 0x1C, 0x1C, 0x38, 0x70, 0x1C, 0x38, 0x38, 0x70, 0x1E, + 0x38, 0x38, 0x70, 0x0E, 0x38, 0x1C, 0xF0, 0x0E, 0x70, 0x1C, 0xE0, 0x0E, + 0x70, 0x1C, 0xE0, 0x0F, 0x70, 0x1C, 0xE0, 0x07, 0x70, 0x0E, 0xE0, 0x07, + 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x0F, 0xC0, 0x03, + 0xE0, 0x07, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x03, 0xC0, 0x07, 0x80, 0xF0, + 0x00, 0x79, 0xE0, 0x01, 0xE3, 0xC0, 0x0F, 0x0F, 0x00, 0x78, 0x1E, 0x01, + 0xE0, 0x3C, 0x0F, 0x00, 0xF0, 0x78, 0x01, 0xE1, 0xC0, 0x03, 0xCF, 0x00, + 0x0F, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, + 0x00, 0x78, 0x78, 0x03, 0xC1, 0xE0, 0x0E, 0x03, 0xC0, 0x78, 0x07, 0x83, + 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x7B, 0xC0, 0x01, 0xE0, 0xF8, + 0x00, 0x1E, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xE0, + 0x07, 0x81, 0xE0, 0x1E, 0x03, 0xC0, 0x38, 0x03, 0xC0, 0xF0, 0x03, 0x81, + 0xC0, 0x07, 0x87, 0x80, 0x07, 0x9E, 0x00, 0x0F, 0x38, 0x00, 0x0F, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, + 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0xF0, + 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x0E, 0x1C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, + 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x7F, 0xFE, 0xC0, 0x30, 0x0C, + 0x01, 0x80, 0x60, 0x18, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0x80, 0x60, + 0x08, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, + 0xC0, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, + 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, + 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, + 0xC0, 0x1F, 0x01, 0xD8, 0x0C, 0xE0, 0xE3, 0x06, 0x18, 0x30, 0xE3, 0x83, + 0x18, 0x1D, 0xC0, 0x6C, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0x03, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xE0, + 0xF0, 0x78, 0x78, 0x0E, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, + 0x7F, 0x03, 0xFF, 0xC3, 0xFE, 0x71, 0xF0, 0x1C, 0x70, 0x07, 0x1C, 0x01, + 0xCF, 0x00, 0xF1, 0xC0, 0x3C, 0x70, 0x3F, 0x1F, 0xFD, 0xF3, 0xFE, 0x7C, + 0x3E, 0x0F, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, 0xFC, 0x3E, + 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x1E, + 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x0F, 0xF8, + 0x1F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xF0, 0x07, + 0x70, 0x0E, 0x78, 0x0E, 0x3C, 0x1E, 0x1F, 0xFC, 0x0F, 0xF8, 0x03, 0xC0, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x07, 0x07, 0xC7, 0x1F, 0xF7, 0x3F, 0xFF, 0x3C, 0x1F, 0x78, 0x0F, + 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x07, 0x70, 0x0F, 0x78, 0x0F, 0x3C, 0x1F, + 0x3F, 0xFB, 0x1F, 0xF3, 0x07, 0xC0, 0x03, 0xE0, 0x07, 0xFC, 0x07, 0xFF, + 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x0E, 0xE0, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x07, 0x00, 0x03, 0x80, 0x1D, + 0xC0, 0x1C, 0xF0, 0x0E, 0x3C, 0x1E, 0x0F, 0xFF, 0x03, 0xFE, 0x00, 0x7C, + 0x00, 0x02, 0x1F, 0x3F, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x03, 0xC0, 0x0F, 0xF7, 0x3F, 0xFF, 0x3C, 0x1F, 0x78, + 0x0F, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x07, 0x70, 0x0F, 0x78, 0x0F, 0x3C, + 0x3F, 0x3F, 0xF7, 0x0F, 0xE7, 0x07, 0xC7, 0x00, 0x07, 0x70, 0x07, 0x70, + 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x01, 0x80, 0xE0, 0x01, 0xC0, + 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0xF8, + 0xE7, 0xF9, 0xDF, 0xFB, 0xF0, 0x7F, 0xC0, 0x7F, 0x00, 0xFE, 0x01, 0xF8, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, + 0x00, 0x00, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xFF, 0xFB, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, 0xE1, 0xE0, 0xE3, 0xC0, + 0xE7, 0x80, 0xEF, 0x00, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xC0, 0xE1, 0xE0, + 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, 0xE0, 0x38, 0xE0, 0x3C, 0xE0, 0x1E, + 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x01, 0xE0, 0x7C, 0x73, 0xFC, 0xFF, 0x3B, 0xFE, 0xFF, 0xDF, 0x07, 0xE0, + 0xEF, 0x01, 0xE0, 0x7F, 0x80, 0xE0, 0x1F, 0x80, 0x70, 0x0F, 0xC0, 0x38, + 0x07, 0xE0, 0x1C, 0x03, 0xF0, 0x0E, 0x01, 0xF8, 0x07, 0x00, 0xFC, 0x03, + 0x80, 0x7E, 0x01, 0xC0, 0x3F, 0x00, 0xE0, 0x1F, 0x80, 0x70, 0x0F, 0xC0, + 0x38, 0x07, 0xE0, 0x1C, 0x03, 0xF0, 0x0E, 0x01, 0xF8, 0x07, 0x00, 0xE0, + 0x01, 0xF1, 0xCF, 0xF3, 0xBF, 0xF7, 0xE0, 0xFF, 0x80, 0xFE, 0x01, 0xFC, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x38, + 0x03, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0x83, 0xC7, 0x80, 0xF3, 0x80, + 0x39, 0xC0, 0x1D, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, + 0x00, 0x7F, 0x00, 0x3B, 0x80, 0x39, 0xC0, 0x1C, 0xF0, 0x1E, 0x3C, 0x1E, + 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0xEF, 0xF8, 0xFF, + 0xFC, 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, + 0x0F, 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0x07, 0xC0, 0x1F, 0xF3, 0x3F, 0xFB, 0x3C, 0x1F, 0x78, 0x0F, 0x70, + 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xF0, 0x07, 0x70, 0x0F, 0x78, 0x0F, 0x7C, 0x1F, 0x3F, + 0xFF, 0x1F, 0xF7, 0x03, 0xC7, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x03, 0xF3, 0xFB, 0xFF, 0xCF, + 0x87, 0x83, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xC1, + 0xE7, 0x01, 0xCE, 0x03, 0x9C, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xE0, + 0x1F, 0xF0, 0x07, 0xE0, 0x01, 0xE0, 0x01, 0xF8, 0x03, 0xF8, 0x07, 0x78, + 0x1C, 0xFF, 0xF8, 0xFF, 0xE0, 0x3E, 0x00, 0x1C, 0x0E, 0x07, 0x03, 0x81, + 0xC7, 0xFF, 0xFE, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, + 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xFC, 0x7E, 0x0F, 0xE0, 0x0F, + 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, + 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, + 0xFC, 0x07, 0xB8, 0x1F, 0x7F, 0xEE, 0x7F, 0x9C, 0x3C, 0x00, 0x70, 0x07, + 0xB8, 0x03, 0x9E, 0x01, 0xC7, 0x01, 0xE3, 0x80, 0xE1, 0xE0, 0x70, 0x70, + 0x70, 0x38, 0x38, 0x1E, 0x1C, 0x07, 0x1C, 0x03, 0x8E, 0x00, 0xE6, 0x00, + 0x77, 0x00, 0x3B, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xE0, + 0x00, 0xF0, 0x3C, 0x07, 0xB8, 0x1F, 0x03, 0x9C, 0x0F, 0x81, 0xCE, 0x07, + 0xC1, 0xE3, 0x87, 0x60, 0xE1, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, 0x70, + 0xCE, 0x38, 0x1C, 0xE3, 0x1C, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, 0x01, + 0xD8, 0x77, 0x00, 0xEC, 0x1B, 0x80, 0x7E, 0x0F, 0xC0, 0x1F, 0x07, 0xC0, + 0x0F, 0x03, 0xE0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x0E, + 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x70, 0x0E, 0xE0, 0x07, 0xE0, + 0x07, 0xC0, 0x03, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0E, 0xE0, 0x1E, 0x70, + 0x1C, 0x78, 0x38, 0x38, 0x78, 0x1C, 0x70, 0x1E, 0xE0, 0x0E, 0xE0, 0x0E, + 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x70, 0x1C, 0x38, 0x3C, 0x38, 0x38, + 0x38, 0x38, 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x0E, 0xE0, 0x0E, 0xE0, + 0x0E, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, 0x03, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7E, 0x00, 0x7C, 0x00, + 0x30, 0x00, 0x7F, 0xFE, 0xFF, 0xFC, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x80, + 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x01, 0x87, 0xC3, 0xE3, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, + 0x03, 0x81, 0xC0, 0xE0, 0x70, 0xF0, 0xF0, 0x78, 0x1E, 0x03, 0x01, 0xC0, + 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x1F, + 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0xC0, 0xF0, 0xF8, 0x18, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x0E, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x18, 0x38, 0xF8, 0xF0, + 0x7C, 0x01, 0xFC, 0x0F, 0x1E, 0x1E, 0x1F, 0xEC, 0x0F, 0xC0, 0x06, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, + 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0xFF, 0xF0, 0x36, 0xDB, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x03, 0xE0, 0x0F, 0xF8, 0x3F, 0xFC, 0x3D, 0x9E, + 0x71, 0x8E, 0x71, 0x8E, 0xE1, 0x87, 0xE1, 0x80, 0xE1, 0x80, 0xE1, 0x80, + 0xE1, 0x80, 0xE1, 0x80, 0xE1, 0x80, 0xE1, 0x87, 0xF1, 0x8F, 0x79, 0x8E, + 0x3D, 0x9E, 0x3F, 0xFC, 0x0F, 0xF8, 0x03, 0xE0, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFF, 0xE0, 0xF8, 0x7C, 0x38, + 0x0F, 0x1E, 0x01, 0xC7, 0x00, 0x39, 0xC0, 0x0E, 0x70, 0x03, 0x9C, 0x00, + 0x07, 0x80, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x0F, 0xFF, 0x00, + 0x38, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0C, + 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xFF, 0xEE, 0xFF, 0xFF, 0xDC, 0x3F, + 0xE0, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x00, 0x7F, 0xFE, 0x07, + 0xC0, 0xE0, 0x78, 0x01, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, + 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xC0, + 0x00, 0x0E, 0x00, 0x01, 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x1C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xE0, + 0x08, 0x0F, 0x81, 0xC0, 0x3F, 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xF8, 0x00, + 0x70, 0x00, 0xEE, 0x00, 0x38, 0xE0, 0x07, 0x1C, 0x01, 0xC1, 0xC0, 0x38, + 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x38, 0x70, 0x07, 0x1C, 0x00, 0x73, 0x80, + 0x0E, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0x00, 0x38, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xF0, 0xFF, 0xFE, 0x00, 0x70, 0x00, + 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x07, 0x0C, 0x00, 0x31, 0x80, 0x03, 0xB8, 0x00, 0x1F, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xC0, + 0x7C, 0x78, 0x03, 0xC7, 0x00, 0x1E, 0xF0, 0x00, 0xEF, 0x00, 0x0E, 0xF0, + 0x00, 0x07, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xFC, 0x00, 0x1F, 0xFC, 0x00, + 0x7F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0E, 0x78, 0x01, + 0xE7, 0xE0, 0x7C, 0x3F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xF8, 0x00, 0x00, + 0x00, 0x03, 0xFC, 0x03, 0xFF, 0x03, 0xC7, 0x81, 0xC0, 0xE0, 0xE0, 0x70, + 0x70, 0x38, 0x38, 0x1C, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF0, 0x07, 0x3E, + 0x07, 0x0F, 0x83, 0x03, 0xF1, 0x80, 0x7D, 0xC0, 0x1E, 0x70, 0x07, 0xBC, + 0x01, 0xCF, 0x00, 0xE7, 0xE0, 0x70, 0xF8, 0x70, 0x3E, 0x38, 0x07, 0xF8, + 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x0E, 0x0E, 0x07, 0x87, 0x01, 0xC3, 0x81, + 0xE1, 0xC0, 0xE0, 0x78, 0xF0, 0x3F, 0xF0, 0x0F, 0xF0, 0x00, 0x18, 0x38, + 0x38, 0xE0, 0x39, 0x80, 0x37, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x00, 0x03, + 0xE0, 0x1F, 0xF0, 0x7F, 0xF1, 0xE0, 0xF3, 0x80, 0xE7, 0x01, 0xCE, 0x00, + 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x0F, 0xF8, 0x03, 0xF0, 0x00, 0xF0, + 0x00, 0xFC, 0x01, 0xFC, 0x03, 0xBC, 0x0E, 0x7F, 0xFC, 0x7F, 0xF0, 0x1F, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3C, + 0x00, 0xF0, 0x1C, 0x00, 0x0E, 0x0E, 0x03, 0x81, 0xC7, 0x07, 0xF8, 0x31, + 0xC3, 0xFF, 0x0E, 0xE0, 0xC0, 0xC1, 0xB8, 0x70, 0x38, 0x7C, 0x18, 0x0E, + 0x0F, 0x0E, 0x00, 0x03, 0xC3, 0x80, 0x00, 0xF0, 0xE0, 0x00, 0x3C, 0x38, + 0x00, 0x0F, 0x0E, 0x01, 0x83, 0xC1, 0x80, 0xE1, 0xF8, 0x70, 0x38, 0x76, + 0x0E, 0x1C, 0x19, 0xC3, 0xFF, 0x0E, 0x30, 0x7F, 0x87, 0x0E, 0x03, 0x03, + 0xC1, 0xC0, 0x01, 0xE0, 0x3C, 0x00, 0xF0, 0x07, 0xF3, 0xF0, 0x00, 0x7F, + 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x0F, 0xF1, 0x86, 0x30, 0xE0, 0x1C, + 0x3F, 0x9F, 0x77, 0x0E, 0xC1, 0xDC, 0x39, 0xFF, 0x9E, 0x70, 0x00, 0x00, + 0x3F, 0xF0, 0x08, 0x11, 0x83, 0x78, 0x7F, 0x1E, 0xC1, 0xC8, 0x10, 0xC1, + 0xCF, 0x1E, 0x78, 0x71, 0x83, 0x08, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0x80, + 0x00, 0x7F, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3C, 0x00, 0xF0, 0x1C, 0x00, + 0x0E, 0x0E, 0x00, 0x01, 0xC7, 0x1F, 0xFC, 0x31, 0xC7, 0xFF, 0x8E, 0xE1, + 0xC0, 0xE1, 0xB8, 0x70, 0x18, 0x7C, 0x1C, 0x06, 0x0F, 0x07, 0x03, 0x83, + 0xC1, 0xFF, 0xC0, 0xF0, 0x7F, 0xE0, 0x3C, 0x1F, 0xFC, 0x0F, 0x07, 0x03, + 0x83, 0xC1, 0xC0, 0xE1, 0xF8, 0x70, 0x38, 0x76, 0x1C, 0x0E, 0x19, 0xC7, + 0x03, 0x8E, 0x31, 0xC0, 0x77, 0x0E, 0x00, 0x03, 0xC1, 0xC0, 0x01, 0xE0, + 0x3C, 0x00, 0xF0, 0x07, 0xF3, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xF0, + 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x7C, 0x07, + 0x80, 0xF0, 0x1B, 0x06, 0x7B, 0xC7, 0xF0, 0x10, 0x00, 0x01, 0x80, 0x00, + 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x06, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x60, 0x00, 0x30, 0x00, 0x18, + 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFC, 0x1E, 0x1F, 0xE6, 0x1F, + 0x83, 0xC0, 0xF0, 0x30, 0x1C, 0x0E, 0x0F, 0x0F, 0x07, 0x03, 0x80, 0xC0, + 0x3F, 0xFF, 0xFC, 0x1E, 0x1F, 0xEE, 0x1B, 0x07, 0xC0, 0xC0, 0x70, 0xF8, + 0x3C, 0x03, 0xC0, 0x30, 0x0F, 0x03, 0xC0, 0xFC, 0xE7, 0xF0, 0x00, 0x03, + 0x0E, 0x00, 0x73, 0x80, 0x07, 0x60, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x1F, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0x3C, 0x00, + 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, + 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xCE, + 0x00, 0xE7, 0x00, 0x73, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x70, 0x07, + 0x38, 0x03, 0x9C, 0x01, 0xCE, 0x00, 0xE7, 0x00, 0xF3, 0xC0, 0x79, 0xE0, + 0x7C, 0xFF, 0xFF, 0xFF, 0xE7, 0xFB, 0xC1, 0xFC, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x01, + 0xFF, 0x0F, 0xFF, 0x3F, 0xFF, 0x7F, 0x8C, 0x7F, 0x8C, 0xFF, 0x8C, 0xFF, + 0x8C, 0xFF, 0x8C, 0xFF, 0x8C, 0xFF, 0x8C, 0xFF, 0x8C, 0xFF, 0x8C, 0xFF, + 0x8C, 0x7F, 0x8C, 0x3F, 0x8C, 0x1F, 0x8C, 0x07, 0x8C, 0x01, 0x8C, 0x01, + 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, + 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, + 0x8C, 0x01, 0x8C, 0xFF, 0xFF, 0x18, 0x38, 0x38, 0x60, 0x39, 0x80, 0x3F, + 0x00, 0x7C, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0xFF, 0xFC, + 0x00, 0x70, 0x01, 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, + 0x80, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0C, 0x31, 0xFF, 0xFC, 0x30, 0xC3, + 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x1F, 0x0F, 0xE7, 0x1D, 0x83, 0xE0, + 0xF0, 0x3C, 0x0F, 0x83, 0x60, 0xDC, 0x73, 0xF8, 0x7C, 0x00, 0x00, 0x07, + 0xFC, 0x81, 0x0C, 0x18, 0xE1, 0xE7, 0x8F, 0x38, 0x30, 0x81, 0x38, 0x37, + 0x8F, 0xE1, 0xEC, 0x18, 0x81, 0x00, 0x00, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, + 0xBF, 0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0xC3, 0xE0, 0x7F, 0x00, 0x01, 0xE0, + 0x1F, 0x80, 0x01, 0xE0, 0x07, 0xC0, 0x00, 0xE0, 0x01, 0xE0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, + 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0xFF, 0xF7, + 0x80, 0x03, 0xFF, 0xF9, 0xC0, 0x01, 0xFF, 0xFC, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x78, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x07, 0x80, 0x01, 0xE0, 0x07, 0xC0, + 0x00, 0x78, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0xFF, 0xFF, 0x07, 0xFF, 0x7F, + 0xFF, 0x81, 0xFF, 0x3F, 0xFF, 0xC0, 0x1E, 0x00, 0x00, 0x00, 0x03, 0xE0, + 0x0F, 0x80, 0x3F, 0xE0, 0xFF, 0x81, 0xFF, 0xCF, 0xFF, 0x0F, 0x07, 0xBC, + 0x1E, 0x78, 0x0F, 0xC0, 0x39, 0xC0, 0x1F, 0x00, 0x77, 0x00, 0x78, 0x01, + 0xFC, 0x00, 0xE0, 0x07, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, + 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0xE0, 0x00, 0xF0, 0x03, 0x80, 0x01, 0xC0, + 0x1E, 0x00, 0x77, 0x00, 0x7C, 0x01, 0xDE, 0x03, 0xF0, 0x0E, 0x3C, 0x1E, + 0xF0, 0x78, 0x7F, 0xF3, 0xFF, 0xC0, 0xFF, 0x87, 0xFE, 0x00, 0xF8, 0x03, + 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9E, 0x00, 0x0F, 0x3C, + 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x1E, + 0x3C, 0x00, 0x78, 0x3C, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x00, + 0x78, 0x1E, 0x00, 0x70, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xF3, 0xC0, 0x01, + 0xE7, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, + 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x03, 0xC0, + 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x3F, 0x00, 0x7F, 0x00, 0xEE, 0x03, + 0xDE, 0x07, 0x1F, 0xFE, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xC0, 0x00, 0x07, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0xC0, 0x00, 0x77, 0x80, 0x01, 0xCE, 0x00, 0x0F, 0x38, 0x00, 0x38, + 0xF0, 0x01, 0xE1, 0xC0, 0x07, 0x07, 0x00, 0x1C, 0x1E, 0x00, 0xF0, 0x38, + 0x03, 0x80, 0xE0, 0x0E, 0x03, 0xC0, 0x78, 0x07, 0x01, 0xFF, 0xFE, 0x07, + 0xFF, 0xF8, 0x3C, 0x00, 0xE0, 0xE0, 0x03, 0xC3, 0x80, 0x0F, 0x1E, 0x00, + 0x1C, 0x70, 0x00, 0x7B, 0xC0, 0x01, 0xEF, 0x00, 0x03, 0xB8, 0x00, 0x0F, + 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x77, 0x80, 0x01, 0xCE, 0x00, + 0x0F, 0x38, 0x00, 0x38, 0xF0, 0x01, 0xE1, 0xC0, 0x07, 0x07, 0x00, 0x1C, + 0x1E, 0x00, 0xF0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x03, 0xC0, 0x78, 0x07, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xE0, 0xE0, 0x03, 0xC3, + 0x80, 0x0F, 0x1E, 0x00, 0x1C, 0x70, 0x00, 0x7B, 0xC0, 0x01, 0xEF, 0x00, + 0x03, 0xB8, 0x00, 0x0F, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1C, 0xC0, + 0x00, 0x63, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x77, + 0x80, 0x01, 0xCE, 0x00, 0x0F, 0x38, 0x00, 0x38, 0xF0, 0x01, 0xE1, 0xC0, + 0x07, 0x07, 0x00, 0x1C, 0x1E, 0x00, 0xF0, 0x38, 0x03, 0x80, 0xE0, 0x0E, + 0x03, 0xC0, 0x78, 0x07, 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, + 0xE0, 0xE0, 0x03, 0xC3, 0x80, 0x0F, 0x1E, 0x00, 0x1C, 0x70, 0x00, 0x7B, + 0xC0, 0x01, 0xEF, 0x00, 0x03, 0xB8, 0x00, 0x0F, 0x01, 0xC3, 0x00, 0x0F, + 0xFC, 0x00, 0x37, 0xE0, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x1D, 0xE0, 0x00, 0x73, 0x80, 0x03, 0xCE, 0x00, 0x0E, 0x3C, 0x00, 0x78, + 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x3C, 0x0E, 0x00, 0xE0, 0x38, + 0x03, 0x80, 0xF0, 0x1E, 0x01, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFE, 0x0F, + 0x00, 0x38, 0x38, 0x00, 0xF0, 0xE0, 0x03, 0xC7, 0x80, 0x07, 0x1C, 0x00, + 0x1E, 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xEE, 0x00, 0x03, 0xC0, 0x03, 0xCF, + 0x00, 0x0F, 0x3C, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x00, 0x00, 0x00, + 0x01, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x73, 0x80, 0x03, 0x8E, 0x00, 0x0E, 0x3C, + 0x00, 0x78, 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x3C, 0x0E, 0x00, + 0xE0, 0x38, 0x03, 0x80, 0xF0, 0x1E, 0x01, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, + 0xFE, 0x0F, 0x00, 0x38, 0x38, 0x00, 0xF0, 0xE0, 0x03, 0xC7, 0x80, 0x07, + 0x1C, 0x00, 0x1E, 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xEE, 0x00, 0x03, 0xC0, + 0x00, 0x70, 0x00, 0x03, 0xF0, 0x00, 0x1D, 0xC0, 0x00, 0x63, 0x00, 0x01, + 0x8C, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, + 0x07, 0x78, 0x00, 0x1C, 0xE0, 0x00, 0xF3, 0x80, 0x03, 0x8F, 0x00, 0x1E, + 0x1C, 0x00, 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0F, 0x03, 0x80, 0x38, 0x0E, + 0x00, 0xE0, 0x3C, 0x07, 0x80, 0x70, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0x83, + 0xC0, 0x0E, 0x0E, 0x00, 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, + 0x07, 0xBC, 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0x00, 0x1F, + 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, + 0x1E, 0x00, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x03, 0x87, 0x80, 0x00, 0x03, + 0xC3, 0xC0, 0x00, 0x01, 0xC1, 0xE0, 0x00, 0x00, 0xE0, 0xF0, 0x00, 0x00, + 0xE0, 0x78, 0x00, 0x00, 0x70, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, + 0x38, 0x0F, 0xFF, 0xF0, 0x3C, 0x07, 0xFF, 0xF8, 0x1E, 0x03, 0xC0, 0x00, + 0x0E, 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x07, 0xFF, 0xFC, 0x00, 0x03, 0xC0, 0x1E, 0x00, 0x01, 0xC0, 0x0F, 0x00, + 0x01, 0xE0, 0x07, 0x80, 0x00, 0xE0, 0x03, 0xC0, 0x00, 0xF0, 0x01, 0xFF, + 0xFF, 0x78, 0x00, 0xFF, 0xFF, 0xB8, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0xFE, + 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xC0, 0xF8, 0x3C, 0x00, 0xF0, + 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x9C, 0x00, 0x0E, 0xF0, 0x00, 0x03, 0x80, + 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0xFF, + 0x00, 0x03, 0x9C, 0x00, 0x0E, 0x78, 0x00, 0x78, 0xE0, 0x01, 0xC3, 0xE0, + 0x0F, 0x07, 0xC0, 0xF8, 0x0F, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x0F, 0xC0, + 0x00, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, + 0xC7, 0x00, 0x03, 0xFC, 0x00, 0x07, 0x80, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0x00, 0x60, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0xFC, 0x00, 0x33, 0x80, + 0x18, 0x60, 0x0E, 0x0C, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x3C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, + 0x3C, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x3F, 0xFF, 0xEF, 0xFF, 0xFB, + 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xF8, 0x70, 0x70, 0x60, 0x60, 0x07, 0x8F, 0x1E, 0x3C, + 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, + 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1C, 0x38, 0x70, 0x60, + 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x1E, 0x0F, 0xC7, 0x31, 0x86, 0xE1, 0xC0, 0x01, 0xE0, + 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, + 0x00, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, + 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, + 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x3F, 0xF0, + 0x00, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x0E, 0x01, 0xF8, 0x38, 0x00, 0xF0, + 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x8E, 0x00, 0x0F, 0x38, 0x00, 0x3C, 0xE0, + 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, + 0x73, 0x80, 0x01, 0xCE, 0x00, 0x07, 0x38, 0x00, 0x1C, 0xE0, 0x00, 0x73, + 0x80, 0x03, 0xCE, 0x00, 0x0E, 0x38, 0x00, 0x78, 0xE0, 0x03, 0xC3, 0x80, + 0x1F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xC6, + 0x00, 0x7F, 0xE0, 0x0C, 0x7C, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xFC, 0x00, 0x7F, 0xC0, 0x07, 0xFE, + 0x00, 0x7E, 0xF0, 0x07, 0xE7, 0x00, 0x7E, 0x78, 0x07, 0xE3, 0xC0, 0x7E, + 0x1C, 0x07, 0xE1, 0xE0, 0x7E, 0x0F, 0x07, 0xE0, 0x70, 0x7E, 0x07, 0x87, + 0xE0, 0x38, 0x7E, 0x01, 0xC7, 0xE0, 0x1E, 0x7E, 0x00, 0xE7, 0xE0, 0x0F, + 0x7E, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x3F, 0xE0, 0x01, 0xFE, 0x00, + 0x0F, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, + 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xFF, 0xC0, 0x07, 0xFF, 0xF0, 0x07, 0xC0, 0x7C, 0x07, 0x80, 0x0F, 0x07, + 0x80, 0x03, 0xC3, 0xC0, 0x00, 0xE3, 0xC0, 0x00, 0x79, 0xC0, 0x00, 0x1C, + 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1D, 0xC0, 0x00, + 0x1E, 0xE0, 0x00, 0x0F, 0x78, 0x00, 0x07, 0x3C, 0x00, 0x07, 0x8F, 0x00, + 0x03, 0x87, 0xC0, 0x03, 0xC1, 0xF0, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, + 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x07, 0x80, 0x00, 0x03, 0x80, 0x00, 0x03, 0x80, 0x00, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFF, 0xC0, 0x07, 0xFF, + 0xF0, 0x07, 0xC0, 0x7C, 0x07, 0x80, 0x0F, 0x07, 0x80, 0x03, 0xC3, 0xC0, + 0x00, 0xE3, 0xC0, 0x00, 0x79, 0xC0, 0x00, 0x1C, 0xE0, 0x00, 0x0F, 0x70, + 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1D, 0xC0, 0x00, 0x1E, 0xE0, 0x00, 0x0F, + 0x78, 0x00, 0x07, 0x3C, 0x00, 0x07, 0x8F, 0x00, 0x03, 0x87, 0xC0, 0x03, + 0xC1, 0xF0, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, 0x03, 0xFF, + 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x1C, 0xC0, 0x00, 0x1C, 0x70, 0x00, 0x0C, 0x1C, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFC, 0x00, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0xF0, 0x07, 0xC0, 0x7C, + 0x07, 0x80, 0x0F, 0x07, 0x80, 0x03, 0xC3, 0xC0, 0x00, 0xE3, 0xC0, 0x00, + 0x79, 0xC0, 0x00, 0x1C, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x1D, 0xC0, 0x00, 0x1E, 0xE0, 0x00, 0x0F, 0x78, 0x00, 0x07, 0x3C, + 0x00, 0x07, 0x8F, 0x00, 0x03, 0x87, 0xC0, 0x03, 0xC1, 0xF0, 0x03, 0xC0, + 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x3F, 0x00, + 0x00, 0x00, 0x70, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x77, 0xE0, 0x00, 0x30, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x0F, + 0xFF, 0xE0, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x87, + 0x80, 0x01, 0xC7, 0x80, 0x00, 0xF3, 0x80, 0x00, 0x39, 0xC0, 0x00, 0x1E, + 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3B, 0x80, 0x00, 0x3D, 0xC0, 0x00, + 0x1E, 0xF0, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x0F, 0x80, + 0x07, 0x83, 0xE0, 0x07, 0x80, 0xFC, 0x0F, 0x80, 0x3F, 0xFF, 0x80, 0x07, + 0xFF, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, + 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0x1E, + 0x0F, 0x00, 0x07, 0x87, 0x80, 0x01, 0xC7, 0x80, 0x00, 0xF3, 0x80, 0x00, + 0x39, 0xC0, 0x00, 0x1E, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3B, 0x80, + 0x00, 0x3D, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x1E, + 0x00, 0x07, 0x0F, 0x80, 0x07, 0x83, 0xE0, 0x07, 0x80, 0xFC, 0x0F, 0x80, + 0x3F, 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x09, 0x80, + 0x77, 0x03, 0x8F, 0x1C, 0x1E, 0xE0, 0x3F, 0x00, 0x78, 0x01, 0xF0, 0x0F, + 0xE0, 0x73, 0xC3, 0x87, 0x9C, 0x0F, 0x60, 0x1C, 0x00, 0x20, 0x00, 0x7F, + 0x01, 0x80, 0xFF, 0xF1, 0x81, 0xFF, 0xFD, 0xC1, 0xF0, 0x1F, 0xC1, 0xE0, + 0x03, 0xC1, 0xE0, 0x01, 0xF0, 0xE0, 0x01, 0xF8, 0xF0, 0x01, 0xDE, 0x70, + 0x01, 0xC7, 0x38, 0x00, 0xC3, 0xBC, 0x00, 0xC1, 0xFE, 0x00, 0xC0, 0xFF, + 0x00, 0xC0, 0x3F, 0x00, 0xC0, 0x1F, 0xC0, 0xE0, 0x0F, 0xE0, 0xE0, 0x0F, + 0xF0, 0xE0, 0x07, 0xB8, 0xE0, 0x03, 0x9C, 0xE0, 0x01, 0xCF, 0xE0, 0x01, + 0xE3, 0xE0, 0x00, 0xE1, 0xE0, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7F, 0x83, + 0xF0, 0x67, 0xFF, 0xF0, 0x60, 0xFF, 0xE0, 0x10, 0x0F, 0x80, 0x00, 0x07, + 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0xEF, 0x00, 0x1E, 0x78, 0x01, 0xE3, + 0xE0, 0x7C, 0x1F, 0xFF, 0x80, 0xFF, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x00, + 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0xEF, 0x00, 0x1E, 0x78, 0x01, 0xE3, 0xE0, + 0x7C, 0x1F, 0xFF, 0x80, 0xFF, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0xF0, 0x00, + 0x1F, 0x80, 0x03, 0x98, 0x00, 0x31, 0xC0, 0x06, 0x0E, 0x00, 0x00, 0x00, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xF0, 0x00, 0xEF, 0x00, 0x1E, 0x78, 0x01, 0xE3, 0xE0, 0x7C, + 0x1F, 0xFF, 0x80, 0xFF, 0xE0, 0x01, 0xF8, 0x00, 0x07, 0x9E, 0x00, 0x79, + 0xE0, 0x07, 0x9E, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x0E, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, + 0x0E, 0xF0, 0x01, 0xE7, 0x80, 0x1E, 0x3E, 0x07, 0xC1, 0xFF, 0xF8, 0x0F, + 0xFE, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x07, + 0xBC, 0x00, 0x0F, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, + 0x78, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xF0, 0x3C, 0x00, 0xE0, 0x70, 0x01, + 0xE1, 0xE0, 0x01, 0xE7, 0x80, 0x03, 0xCE, 0x00, 0x03, 0xFC, 0x00, 0x03, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, + 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xFF, 0xFC, 0xE0, 0x07, 0xDC, 0x00, 0x7B, + 0x80, 0x07, 0x70, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xB8, 0x00, 0xF7, + 0x00, 0x1E, 0xE0, 0x3F, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x70, 0x00, 0x0E, + 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, + 0x00, 0x00, 0x0F, 0xF8, 0x0F, 0xFF, 0x87, 0xC1, 0xF1, 0xC0, 0x1C, 0x70, + 0x07, 0xBC, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x1E, 0xE0, 0x07, 0x38, 0x03, + 0xCE, 0x0F, 0xE3, 0x83, 0xF8, 0xE0, 0xFF, 0x38, 0x01, 0xEE, 0x00, 0x3B, + 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, + 0x03, 0xB8, 0x01, 0xEE, 0x01, 0xF3, 0x87, 0xF8, 0xE1, 0xFC, 0x00, 0x10, + 0x00, 0x0F, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, + 0x80, 0xE1, 0xC0, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, + 0xFC, 0x3F, 0xE7, 0x1F, 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, + 0x1C, 0x03, 0xC7, 0x03, 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, + 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x3F, 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, 0x80, + 0xE1, 0xC0, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, 0xFC, + 0x3F, 0xE7, 0x1F, 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, 0x1C, + 0x03, 0xC7, 0x03, 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, 0x03, + 0xE0, 0x00, 0xFC, 0x00, 0x73, 0x00, 0x38, 0xE0, 0x0C, 0x18, 0x00, 0x00, + 0x00, 0x3F, 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, 0x80, 0xE1, + 0xC0, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, 0xFC, 0x3F, + 0xE7, 0x1F, 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, 0x1C, 0x03, + 0xC7, 0x03, 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, 0x07, 0x0C, + 0x03, 0xFF, 0x01, 0xFF, 0x80, 0x61, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, 0x80, 0xE1, 0xC0, + 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, 0xFC, 0x3F, 0xE7, + 0x1F, 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, 0x1C, 0x03, 0xC7, + 0x03, 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, 0x0F, 0x3C, 0x03, + 0xCF, 0x00, 0xF3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, 0x80, 0xE1, 0xC0, 0x1C, + 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, 0xFC, 0x3F, 0xE7, 0x1F, + 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, 0x1C, 0x03, 0xC7, 0x03, + 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, 0x01, 0xE0, 0x00, 0xFC, + 0x00, 0x77, 0x00, 0x18, 0xC0, 0x06, 0x30, 0x01, 0xFC, 0x00, 0x3E, 0x00, + 0x00, 0x00, 0x03, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xE0, 0xF0, 0x78, 0x78, + 0x0E, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x7F, 0x03, 0xFF, + 0xC3, 0xFE, 0x71, 0xF0, 0x1C, 0x70, 0x07, 0x1C, 0x01, 0xCF, 0x00, 0xF1, + 0xC0, 0x3C, 0x70, 0x3F, 0x1F, 0xFD, 0xF3, 0xFE, 0x7C, 0x3E, 0x0F, 0x03, + 0xE0, 0x3E, 0x00, 0xFF, 0xC7, 0xFC, 0x0F, 0xFF, 0x7F, 0xF8, 0x78, 0x1F, + 0x83, 0xC7, 0x80, 0xF8, 0x0F, 0x38, 0x03, 0x80, 0x38, 0x00, 0x1C, 0x01, + 0xE0, 0x01, 0xE0, 0x07, 0x00, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xCF, + 0xF9, 0xFF, 0xFE, 0xF8, 0x0C, 0x00, 0x07, 0x00, 0x70, 0x00, 0x78, 0x03, + 0x80, 0x1B, 0xC0, 0x3C, 0x01, 0xCE, 0x03, 0xF0, 0x1E, 0x78, 0x3B, 0xC1, + 0xE3, 0xFF, 0x8F, 0xFF, 0x0F, 0xF8, 0x3F, 0xE0, 0x1F, 0x00, 0x7C, 0x00, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x0E, + 0xF0, 0x0E, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xF0, 0x07, 0x70, 0x0E, 0x78, 0x0E, 0x3C, 0x1E, 0x1F, 0xFC, + 0x0F, 0xF8, 0x03, 0xC0, 0x01, 0x00, 0x03, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x18, 0xE0, 0x1F, 0xE0, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, + 0xFF, 0x0F, 0x07, 0x87, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x1D, 0xC0, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x3B, 0x80, 0x39, 0xE0, 0x1C, 0x78, 0x3C, 0x1F, 0xFE, 0x07, 0xFC, 0x00, + 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, 0xFF, 0x0F, + 0x07, 0x87, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x1D, 0xC0, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x3B, 0x80, + 0x39, 0xE0, 0x1C, 0x78, 0x3C, 0x1F, 0xFE, 0x07, 0xFC, 0x00, 0xF8, 0x00, + 0x01, 0xE0, 0x01, 0xF8, 0x01, 0xCE, 0x00, 0xC3, 0x00, 0xE0, 0xC0, 0x00, + 0x00, 0x0F, 0x80, 0x1F, 0xF0, 0x1F, 0xFE, 0x1E, 0x0F, 0x0E, 0x03, 0xCE, + 0x00, 0xE7, 0x00, 0x3B, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x38, 0xF0, + 0x78, 0x3F, 0xFC, 0x0F, 0xF8, 0x01, 0xF0, 0x00, 0x0F, 0x3C, 0x07, 0x9E, + 0x03, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x1F, + 0xF0, 0x1F, 0xFE, 0x1E, 0x0F, 0x0E, 0x03, 0xCE, 0x00, 0xE7, 0x00, 0x3B, + 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x38, 0xF0, 0x78, 0x3F, 0xFC, 0x0F, + 0xF8, 0x01, 0xF0, 0x00, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x1C, + 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x00, 0x00, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x0F, 0x83, 0xF1, 0xCC, 0x61, 0xB0, + 0x70, 0x00, 0x00, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, + 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, + 0x07, 0x00, 0xE3, 0xF1, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x00, 0x18, 0x00, 0x1E, 0x38, 0x03, + 0xF8, 0x00, 0xF0, 0x01, 0xFE, 0x00, 0xC7, 0x80, 0x01, 0xE0, 0x07, 0x78, + 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x07, 0x8F, 0x01, 0xE7, 0x00, 0x73, 0x80, + 0x3B, 0xC0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, + 0x00, 0x77, 0x00, 0x73, 0x80, 0x39, 0xE0, 0x3C, 0x78, 0x3C, 0x1F, 0xFC, + 0x07, 0xFC, 0x00, 0xF8, 0x00, 0x0C, 0x18, 0x3F, 0x70, 0x7F, 0xE1, 0x87, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x73, 0xFC, 0xEF, 0xFD, 0xF8, 0x3F, + 0xE0, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, + 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, + 0xF0, 0x07, 0xE0, 0x0E, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, + 0xFE, 0x0F, 0x07, 0x8F, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x3B, 0xC0, 0x0F, + 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, + 0x73, 0x80, 0x39, 0xE0, 0x3C, 0x78, 0x3C, 0x1F, 0xFC, 0x07, 0xFC, 0x00, + 0xF8, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, 0xFE, 0x0F, + 0x07, 0x8F, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x3B, 0xC0, 0x0F, 0xC0, 0x07, + 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0x80, + 0x39, 0xE0, 0x3C, 0x78, 0x3C, 0x1F, 0xFC, 0x07, 0xFC, 0x00, 0xF8, 0x00, + 0x01, 0xC0, 0x01, 0xF0, 0x00, 0xDC, 0x00, 0xE6, 0x00, 0xE3, 0x80, 0x60, + 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, 0xFE, 0x0F, 0x07, 0x8F, + 0x01, 0xE7, 0x00, 0x73, 0x80, 0x3B, 0xC0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, + 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0x80, 0x39, 0xE0, + 0x3C, 0x78, 0x3C, 0x1F, 0xFC, 0x07, 0xFC, 0x00, 0xF8, 0x00, 0x06, 0x0C, + 0x07, 0xFE, 0x07, 0xFE, 0x03, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, + 0x80, 0x1F, 0xF0, 0x1F, 0xFC, 0x1E, 0x0F, 0x1E, 0x03, 0xCE, 0x00, 0xE7, + 0x00, 0x77, 0x80, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, + 0xFC, 0x00, 0xEE, 0x00, 0xE7, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x3F, + 0xF8, 0x0F, 0xF8, 0x01, 0xF0, 0x00, 0x0E, 0x38, 0x07, 0x1C, 0x03, 0x8E, + 0x01, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, + 0xF8, 0x0F, 0xFE, 0x0F, 0x07, 0x8F, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x3B, + 0xC0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, + 0x77, 0x00, 0x73, 0x80, 0x39, 0xE0, 0x3C, 0x78, 0x3C, 0x1F, 0xFC, 0x07, + 0xFC, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x83, 0xFE, 0x61, 0xFF, 0xF0, + 0xF0, 0x78, 0x78, 0x0F, 0x1C, 0x03, 0xC7, 0x01, 0xF3, 0xC0, 0xCE, 0xE0, + 0x63, 0xB8, 0x30, 0xEE, 0x18, 0x3B, 0x8C, 0x0E, 0xF6, 0x03, 0x9D, 0x81, + 0xC7, 0xC0, 0x71, 0xE0, 0x3C, 0x3C, 0x1E, 0x1F, 0xFF, 0x0C, 0xFF, 0x82, + 0x0F, 0x80, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, 0x07, 0xB8, 0x1F, 0x7F, + 0xEE, 0x7F, 0x9C, 0x3C, 0x00, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1C, + 0x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, + 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, 0x07, + 0xB8, 0x1F, 0x7F, 0xEE, 0x7F, 0x9C, 0x3C, 0x00, 0x03, 0x80, 0x0F, 0x80, + 0x1B, 0x80, 0x73, 0x01, 0xC7, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, + 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, + 0x03, 0xFC, 0x07, 0xB8, 0x1F, 0x7F, 0xEE, 0x7F, 0x9C, 0x3C, 0x00, 0x1C, + 0x70, 0x38, 0xE0, 0x71, 0xC0, 0xE3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, + 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x7E, 0x00, 0xFC, 0x03, 0xFC, 0x07, 0xB8, 0x1F, 0x7F, 0xEE, 0x7F, 0x9C, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0E, 0xE0, 0x0E, 0x70, 0x0E, + 0x70, 0x1C, 0x70, 0x1C, 0x38, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x70, + 0x1C, 0x70, 0x1C, 0x70, 0x0E, 0xE0, 0x0E, 0xE0, 0x0E, 0xE0, 0x07, 0xC0, + 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x1E, 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x30, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, + 0xEF, 0xF8, 0xFF, 0xFC, 0xFC, 0x3E, 0xF0, 0x1E, 0xF0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, + 0xE3, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0E, 0xE0, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x70, 0x1C, 0x38, 0x3C, 0x38, 0x38, 0x38, 0x38, + 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x0E, 0xE0, 0x0E, 0xE0, 0x0E, 0xE0, + 0x07, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x30, 0x00 }; + +const GFXglyph FreeSans18pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 10, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 3, 26, 10, 4, -25 }, // 0x21 '!' U+0021 + { 11, 9, 9, 12, 2, -24 }, // 0x22 '"' U+0022 + { 22, 19, 25, 19, 0, -23 }, // 0x23 '#' U+0023 + { 82, 17, 31, 19, 1, -26 }, // 0x24 '$' U+0024 + { 148, 29, 26, 31, 1, -24 }, // 0x25 '%' U+0025 + { 243, 20, 26, 23, 2, -24 }, // 0x26 '&' U+0026 + { 308, 3, 9, 7, 2, -24 }, // 0x27 ''' U+0027 + { 312, 7, 33, 12, 3, -25 }, // 0x28 '(' U+0028 + { 341, 8, 33, 12, 1, -25 }, // 0x29 ')' U+0029 + { 374, 11, 11, 14, 1, -25 }, // 0x2a '*' U+002A + { 390, 17, 17, 20, 2, -16 }, // 0x2b '+' U+002B + { 427, 4, 9, 10, 3, -3 }, // 0x2c ',' U+002C + { 432, 8, 3, 12, 2, -10 }, // 0x2d '-' U+002D + { 435, 4, 4, 10, 3, -3 }, // 0x2e '.' U+002E + { 437, 10, 27, 10, 0, -25 }, // 0x2f '/' U+002F + { 471, 17, 26, 19, 1, -24 }, // 0x30 '0' U+0030 + { 527, 8, 25, 19, 4, -24 }, // 0x31 '1' U+0031 + { 552, 17, 25, 19, 1, -24 }, // 0x32 '2' U+0032 + { 606, 17, 26, 19, 1, -24 }, // 0x33 '3' U+0033 + { 662, 17, 25, 19, 1, -24 }, // 0x34 '4' U+0034 + { 716, 17, 26, 19, 1, -24 }, // 0x35 '5' U+0035 + { 772, 17, 26, 19, 1, -24 }, // 0x36 '6' U+0036 + { 828, 16, 25, 19, 2, -24 }, // 0x37 '7' U+0037 + { 878, 17, 26, 19, 1, -24 }, // 0x38 '8' U+0038 + { 934, 17, 26, 19, 1, -24 }, // 0x39 '9' U+0039 + { 990, 3, 18, 10, 4, -17 }, // 0x3a ':' U+003A + { 997, 4, 23, 10, 4, -17 }, // 0x3b ';' U+003B + { 1009, 17, 17, 20, 2, -16 }, // 0x3c '<' U+003C + { 1046, 17, 8, 20, 2, -11 }, // 0x3d '=' U+003D + { 1063, 17, 17, 20, 2, -16 }, // 0x3e '>' U+003E + { 1100, 15, 26, 19, 3, -25 }, // 0x3f '?' U+003F + { 1149, 32, 31, 36, 1, -25 }, // 0x40 '@' U+0040 + { 1273, 22, 26, 23, 1, -25 }, // 0x41 'A' U+0041 + { 1345, 19, 26, 23, 3, -25 }, // 0x42 'B' U+0042 + { 1407, 22, 27, 25, 2, -25 }, // 0x43 'C' U+0043 + { 1482, 20, 26, 25, 3, -25 }, // 0x44 'D' U+0044 + { 1547, 18, 26, 23, 3, -25 }, // 0x45 'E' U+0045 + { 1606, 17, 26, 21, 3, -25 }, // 0x46 'F' U+0046 + { 1662, 23, 27, 27, 2, -25 }, // 0x47 'G' U+0047 + { 1740, 20, 26, 25, 3, -25 }, // 0x48 'H' U+0048 + { 1805, 4, 26, 10, 3, -25 }, // 0x49 'I' U+0049 + { 1818, 14, 27, 18, 1, -25 }, // 0x4a 'J' U+004A + { 1866, 20, 26, 23, 3, -25 }, // 0x4b 'K' U+004B + { 1931, 16, 26, 19, 3, -25 }, // 0x4c 'L' U+004C + { 1983, 24, 26, 29, 3, -25 }, // 0x4d 'M' U+004D + { 2061, 20, 26, 25, 3, -25 }, // 0x4e 'N' U+004E + { 2126, 25, 27, 27, 1, -25 }, // 0x4f 'O' U+004F + { 2211, 19, 26, 23, 3, -25 }, // 0x50 'P' U+0050 + { 2273, 25, 28, 27, 1, -25 }, // 0x51 'Q' U+0051 + { 2361, 21, 26, 25, 3, -25 }, // 0x52 'R' U+0052 + { 2430, 20, 27, 23, 2, -25 }, // 0x53 'S' U+0053 + { 2498, 20, 26, 21, 1, -25 }, // 0x54 'T' U+0054 + { 2563, 20, 27, 25, 3, -25 }, // 0x55 'U' U+0055 + { 2631, 22, 26, 23, 1, -25 }, // 0x56 'V' U+0056 + { 2703, 32, 26, 33, 1, -25 }, // 0x57 'W' U+0057 + { 2807, 22, 26, 23, 1, -25 }, // 0x58 'X' U+0058 + { 2879, 23, 26, 23, 0, -25 }, // 0x59 'Y' U+0059 + { 2954, 19, 26, 21, 1, -25 }, // 0x5a 'Z' U+005A + { 3016, 7, 33, 10, 2, -25 }, // 0x5b '[' U+005B + { 3045, 10, 27, 10, 0, -25 }, // 0x5c '\' U+005C + { 3079, 6, 33, 10, 1, -25 }, // 0x5d ']' U+005D + { 3104, 13, 13, 16, 2, -24 }, // 0x5e '^' U+005E + { 3126, 21, 2, 19, -1, 5 }, // 0x5f '_' U+005F + { 3132, 7, 5, 12, 1, -25 }, // 0x60 '`' U+0060 + { 3137, 18, 20, 19, 1, -18 }, // 0x61 'a' U+0061 + { 3182, 16, 27, 19, 2, -25 }, // 0x62 'b' U+0062 + { 3236, 16, 20, 18, 1, -18 }, // 0x63 'c' U+0063 + { 3276, 16, 27, 19, 1, -25 }, // 0x64 'd' U+0064 + { 3330, 17, 20, 19, 1, -18 }, // 0x65 'e' U+0065 + { 3373, 8, 26, 10, 1, -25 }, // 0x66 'f' U+0066 + { 3399, 16, 27, 19, 1, -18 }, // 0x67 'g' U+0067 + { 3453, 15, 26, 19, 2, -25 }, // 0x68 'h' U+0068 + { 3502, 3, 26, 8, 2, -25 }, // 0x69 'i' U+0069 + { 3512, 6, 34, 8, -1, -25 }, // 0x6a 'j' U+006A + { 3538, 16, 26, 18, 2, -25 }, // 0x6b 'k' U+006B + { 3590, 3, 26, 8, 2, -25 }, // 0x6c 'l' U+006C + { 3600, 25, 19, 29, 2, -18 }, // 0x6d 'm' U+006D + { 3660, 15, 19, 19, 2, -18 }, // 0x6e 'n' U+006E + { 3696, 17, 20, 19, 1, -18 }, // 0x6f 'o' U+006F + { 3739, 16, 27, 19, 2, -18 }, // 0x70 'p' U+0070 + { 3793, 16, 27, 19, 1, -18 }, // 0x71 'q' U+0071 + { 3847, 9, 19, 12, 2, -18 }, // 0x72 'r' U+0072 + { 3869, 15, 20, 18, 1, -18 }, // 0x73 's' U+0073 + { 3907, 9, 24, 10, 0, -22 }, // 0x74 't' U+0074 + { 3934, 15, 19, 19, 2, -17 }, // 0x75 'u' U+0075 + { 3970, 17, 18, 18, 0, -17 }, // 0x76 'v' U+0076 + { 4009, 25, 18, 25, 0, -17 }, // 0x77 'w' U+0077 + { 4066, 16, 18, 18, 1, -17 }, // 0x78 'x' U+0078 + { 4102, 16, 26, 18, 1, -17 }, // 0x79 'y' U+0079 + { 4154, 15, 18, 18, 1, -17 }, // 0x7a 'z' U+007A + { 4188, 9, 33, 12, 1, -25 }, // 0x7b '{' U+007B + { 4226, 3, 33, 9, 3, -25 }, // 0x7c '|' U+007C + { 4239, 8, 33, 12, 1, -25 }, // 0x7d '}' U+007D + { 4272, 15, 6, 20, 3, -14 }, // 0x7e '~' U+007E + { 4284, 18, 26, 25, 3, -25 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 4343, 1, 1, 10, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 4344, 3, 26, 10, 5, -17 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 4354, 16, 26, 19, 2, -21 }, // 0x82 'CENT SIGN' U+00A2 + { 4406, 18, 27, 19, 1, -25 }, // 0x83 'POUND SIGN' U+00A3 + { 4467, 21, 26, 23, 1, -24 }, // 0x84 'EURO SIGN *' U+20AC + { 4536, 19, 25, 19, 0, -24 }, // 0x85 'YEN SIGN' U+00A5 + { 4596, 20, 33, 23, 2, -31 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 4679, 17, 33, 19, 1, -25 }, // 0x87 'SECTION SIGN' U+00A7 + { 4750, 15, 27, 18, 1, -25 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 4801, 26, 27, 26, 0, -25 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 4889, 11, 15, 13, 1, -25 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 4910, 12, 11, 16, 2, -14 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 4927, 18, 10, 20, 1, -12 }, // 0x8c 'NOT SIGN' U+00AC + { 4950, 8, 3, 12, 2, -10 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 4953, 26, 27, 26, 0, -25 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 5041, 10, 3, 12, 1, -24 }, // 0x8f 'MACRON' U+00AF + { 5045, 11, 11, 21, 5, -23 }, // 0x90 'DEGREE SIGN' U+00B0 + { 5061, 17, 22, 20, 2, -21 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 5108, 10, 15, 12, 1, -24 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 5127, 10, 16, 12, 1, -24 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 5147, 19, 32, 21, 1, -31 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 5223, 17, 26, 19, 2, -17 }, // 0x95 'MICRO SIGN' U+00B5 + { 5279, 16, 32, 19, 2, -25 }, // 0x96 'PILCROW SIGN' U+00B6 + { 5343, 4, 4, 10, 3, -11 }, // 0x97 'MIDDLE DOT' U+00B7 + { 5345, 15, 26, 18, 1, -25 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 5394, 6, 15, 12, 2, -24 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 5406, 10, 15, 13, 1, -25 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 5425, 12, 11, 16, 2, -14 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 5442, 33, 27, 35, 1, -25 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 5554, 30, 20, 33, 1, -18 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 5629, 23, 31, 23, 0, -30 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 5719, 15, 26, 19, 3, -17 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 5768, 22, 32, 23, 1, -31 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 5856, 22, 32, 23, 1, -31 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 5944, 22, 32, 23, 1, -31 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 6032, 22, 31, 23, 1, -30 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 6118, 22, 31, 23, 1, -30 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 6204, 22, 34, 23, 1, -33 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 6298, 33, 26, 35, 0, -25 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 6406, 22, 33, 25, 2, -25 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 6497, 18, 32, 23, 3, -31 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 6569, 18, 32, 23, 3, -31 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 6641, 18, 32, 23, 3, -31 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 6713, 18, 31, 23, 3, -30 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 6783, 7, 32, 10, 0, -31 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 6811, 8, 32, 10, 2, -31 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 6843, 10, 32, 10, 0, -31 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 6883, 10, 31, 10, 0, -30 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 6922, 22, 26, 25, 1, -25 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 6994, 20, 30, 25, 3, -29 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 7069, 25, 33, 27, 1, -31 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 7173, 25, 33, 27, 1, -31 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 7277, 25, 33, 27, 1, -31 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 7381, 25, 32, 27, 1, -30 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 7481, 25, 32, 27, 1, -30 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 7581, 14, 14, 20, 3, -14 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 7606, 25, 27, 27, 1, -25 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 7691, 20, 33, 25, 3, -31 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 7774, 20, 33, 25, 3, -31 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 7857, 20, 33, 25, 3, -31 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 7940, 20, 32, 25, 3, -30 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 8020, 23, 32, 23, 0, -31 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 8112, 19, 26, 23, 3, -25 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 8174, 18, 26, 21, 2, -24 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 8233, 18, 26, 19, 1, -24 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 8292, 18, 26, 19, 1, -24 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 8351, 18, 26, 19, 1, -24 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 8410, 18, 26, 19, 1, -24 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 8469, 18, 26, 19, 1, -24 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 8528, 18, 28, 19, 1, -26 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 8591, 29, 20, 31, 1, -18 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 8664, 16, 26, 18, 1, -18 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 8716, 17, 27, 19, 1, -25 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 8774, 17, 27, 19, 1, -25 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 8832, 17, 26, 19, 1, -24 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 8888, 17, 26, 19, 1, -24 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 8944, 7, 26, 9, 0, -25 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 8967, 8, 26, 9, 1, -25 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 8993, 10, 26, 9, 0, -25 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 9026, 9, 25, 9, 0, -24 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 9055, 17, 27, 19, 1, -25 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 9113, 15, 25, 19, 2, -24 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 9160, 17, 27, 19, 1, -25 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 9218, 17, 27, 19, 1, -25 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 9276, 17, 27, 19, 1, -25 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 9334, 17, 26, 19, 1, -24 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 9390, 17, 27, 19, 1, -25 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 9448, 17, 17, 20, 2, -16 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 9485, 18, 20, 21, 1, -18 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 9530, 15, 27, 19, 2, -25 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 9581, 15, 27, 19, 2, -25 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 9632, 15, 27, 19, 2, -25 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 9683, 15, 27, 19, 2, -25 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 9734, 16, 34, 18, 1, -25 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 9802, 16, 33, 19, 2, -24 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 9868, 16, 34, 18, 1, -25 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeSans18pt8b PROGMEM = { + (uint8_t *)FreeSans18pt8bBitmaps, + (GFXglyph *)FreeSans18pt8bGlyphs, + 0x20, 0xDF, 49 }; + +// Approx. 11287 bytes diff --git a/RX_FSK/src/fonts/FreeSans9pt8b.h b/RX_FSK/src/fonts/FreeSans9pt8b.h new file mode 100644 index 0000000..e1c87c5 --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans9pt8b.h @@ -0,0 +1,421 @@ +const uint8_t FreeSans9pt8bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFF, 0x83, 0xC0, 0xDD, 0xD9, 0x90, 0x09, 0x82, 0x61, 0x90, + 0x64, 0x7F, 0xC4, 0xC1, 0x30, 0xC8, 0xFF, 0xBF, 0xE2, 0x20, 0x98, 0x26, + 0x00, 0x10, 0x3C, 0x76, 0xD3, 0x93, 0xD0, 0xF0, 0x7C, 0x17, 0x13, 0x91, + 0x91, 0xD3, 0x7E, 0x10, 0x10, 0x00, 0x21, 0xE1, 0x08, 0x84, 0x23, 0x20, + 0x8C, 0x83, 0x64, 0x07, 0x10, 0x00, 0x8E, 0x06, 0x6C, 0x13, 0x10, 0xCC, + 0x42, 0x11, 0x18, 0x78, 0x1C, 0x0F, 0x86, 0x21, 0x88, 0x36, 0x0F, 0x03, + 0x81, 0xB2, 0xC6, 0xA0, 0xEC, 0x13, 0x1E, 0x7C, 0xC0, 0xFE, 0x80, 0x12, + 0x26, 0x44, 0xCC, 0xCC, 0x44, 0x46, 0x22, 0x10, 0x84, 0x46, 0x22, 0x23, + 0x33, 0x22, 0x26, 0x4C, 0x80, 0x25, 0x5C, 0xA5, 0x00, 0x08, 0x04, 0x02, + 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xF0, 0xFF, 0xC0, 0x08, + 0x44, 0x21, 0x10, 0x84, 0x42, 0x11, 0x08, 0x00, 0x18, 0x7E, 0x42, 0xC3, + 0xC3, 0x83, 0x83, 0x83, 0x83, 0xC3, 0xC3, 0x46, 0x7C, 0x11, 0x7F, 0x11, + 0x11, 0x11, 0x11, 0x10, 0x3C, 0x7E, 0xC3, 0xC1, 0x81, 0x03, 0x06, 0x1C, + 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0x3C, 0x7E, 0xC3, 0xC3, 0x03, 0x06, 0x1C, + 0x03, 0x03, 0x83, 0x83, 0xC3, 0x7E, 0x02, 0x03, 0x01, 0x81, 0x41, 0xA1, + 0x90, 0x88, 0xC4, 0xC2, 0x7F, 0xC0, 0x80, 0x40, 0x20, 0x7F, 0x7F, 0x40, + 0x40, 0xC0, 0xFE, 0xC3, 0x03, 0x01, 0x01, 0x83, 0xC3, 0x7E, 0x1C, 0x7E, + 0x43, 0xC3, 0xC0, 0xBC, 0xFE, 0xC3, 0xC1, 0xC1, 0xC3, 0x63, 0x7E, 0xFF, + 0xFF, 0x03, 0x02, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x30, 0x20, 0x20, + 0x3C, 0x7E, 0xC3, 0xC3, 0xC3, 0x66, 0x7C, 0xC3, 0x83, 0x81, 0x83, 0xC3, + 0x7E, 0x38, 0x7E, 0xC2, 0x83, 0x83, 0x83, 0xC3, 0x7D, 0x13, 0x03, 0xC3, + 0xC6, 0x7C, 0xC0, 0x03, 0xC0, 0xC0, 0x03, 0xD6, 0x00, 0x01, 0xC3, 0x8F, + 0x0C, 0x07, 0x00, 0xF0, 0x0E, 0x01, 0x80, 0xFF, 0x80, 0x00, 0x1F, 0xF0, + 0x00, 0x60, 0x1E, 0x01, 0xC0, 0x38, 0x3C, 0x71, 0xE0, 0x80, 0x00, 0x3E, + 0x63, 0x43, 0xC1, 0x03, 0x06, 0x0C, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, + 0x07, 0xF0, 0x1C, 0x1C, 0x30, 0x0E, 0x60, 0x06, 0x43, 0xD3, 0xC6, 0x33, + 0x8C, 0x31, 0x8C, 0x23, 0x88, 0x23, 0x8C, 0x62, 0xCC, 0xEC, 0xC7, 0x38, + 0x60, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x01, 0x80, 0x06, 0x00, 0xF0, 0x0F, + 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x06, 0x60, + 0x66, 0x06, 0xC0, 0x30, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xB0, 0xEF, + 0xFB, 0x03, 0xC0, 0xF0, 0x1C, 0x0F, 0x07, 0xFF, 0x00, 0x1F, 0x86, 0x19, + 0x81, 0xE0, 0x3C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x78, 0x0D, 0x81, + 0xB8, 0x63, 0xF8, 0xFE, 0x20, 0xC8, 0x1A, 0x03, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x1A, 0x1C, 0xFE, 0x00, 0xFF, 0xC0, 0x20, 0x10, + 0x08, 0x04, 0x03, 0xFD, 0x00, 0x80, 0x40, 0x20, 0x10, 0x0F, 0xF8, 0xFF, + 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x1F, 0x83, 0x0E, 0x60, 0x6C, 0x03, 0xC0, 0x0C, 0x00, 0x83, 0xFC, 0x3F, + 0xC0, 0x3C, 0x03, 0x60, 0x77, 0x0F, 0x1F, 0x90, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x3C, 0x06, 0xFF, 0xF8, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0xC3, 0xC3, 0x66, 0x7E, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, + 0xB8, 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x04, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, + 0x0F, 0xF8, 0xE0, 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, + 0x63, 0x79, 0x13, 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, + 0xE0, 0x7C, 0x0F, 0xC1, 0xEC, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, + 0x78, 0x2F, 0x07, 0xE0, 0x7C, 0x0E, 0x1F, 0x87, 0x0E, 0x60, 0x6C, 0x03, + 0xC0, 0x38, 0x01, 0x80, 0x18, 0x01, 0xC0, 0x3C, 0x03, 0x60, 0x67, 0x0E, + 0x1F, 0x80, 0xFF, 0x41, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0xFD, 0x00, 0x80, + 0x40, 0x20, 0x10, 0x08, 0x00, 0x1F, 0x87, 0x0E, 0x60, 0x6C, 0x03, 0xC0, + 0x38, 0x01, 0x80, 0x18, 0x01, 0xC0, 0x3C, 0x03, 0x61, 0xE7, 0x0E, 0x1F, + 0xF0, 0x01, 0xFF, 0x20, 0x68, 0x0E, 0x03, 0x80, 0xE0, 0x6F, 0xF2, 0x06, + 0x80, 0xA0, 0x28, 0x0A, 0x03, 0x80, 0xC0, 0x3F, 0x18, 0x6C, 0x0F, 0x03, + 0xC0, 0x1E, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x3C, 0x0D, 0x87, 0x3F, 0x80, + 0xFF, 0xE0, 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, + 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3C, 0x0B, 0x86, 0x7F, 0x00, 0xC0, + 0x58, 0x1B, 0x03, 0x30, 0x46, 0x18, 0x43, 0x0C, 0x41, 0x98, 0x13, 0x03, + 0x40, 0x78, 0x07, 0x00, 0xC0, 0x41, 0xC1, 0xB0, 0xE1, 0x98, 0x50, 0xCC, + 0x28, 0x62, 0x36, 0x31, 0x9B, 0x10, 0xC8, 0x98, 0x64, 0x6C, 0x16, 0x36, + 0x0B, 0x0A, 0x07, 0x07, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0x63, 0x0C, + 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x70, 0x06, 0x00, 0xF0, 0x09, 0x81, 0x98, + 0x30, 0xC6, 0x06, 0x60, 0x60, 0x60, 0x36, 0x06, 0x30, 0xC1, 0x0C, 0x19, + 0x80, 0xD0, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x7F, 0xC0, 0x18, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x80, 0x60, + 0x18, 0x06, 0x01, 0x80, 0x30, 0x0F, 0xFE, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xF0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, + 0x80, 0xF3, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xF0, 0x30, 0x60, + 0xA2, 0x44, 0xD8, 0xA1, 0x00, 0xFF, 0xC0, 0x63, 0x3C, 0x3F, 0x30, 0x80, + 0x60, 0x73, 0xFB, 0x0D, 0x06, 0xC7, 0x7D, 0xC0, 0x80, 0x80, 0x80, 0x9C, + 0xBE, 0xC3, 0xC1, 0xC1, 0x81, 0xC1, 0xC3, 0xE3, 0xBE, 0x38, 0x7E, 0xC2, + 0x82, 0x80, 0x80, 0x80, 0x82, 0xC6, 0x7C, 0x01, 0x80, 0xC0, 0x63, 0xB3, + 0xFB, 0x0D, 0x06, 0x83, 0xC1, 0xA0, 0xD0, 0x6C, 0x73, 0xE8, 0x18, 0x7E, + 0xC3, 0xC3, 0x81, 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x39, 0x08, 0x4F, 0x90, + 0x84, 0x21, 0x08, 0x42, 0x00, 0x38, 0x7F, 0xC7, 0x83, 0x83, 0x83, 0x83, + 0x83, 0xC7, 0x7F, 0x03, 0x82, 0xE6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDC, 0xFE, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xF0, 0xFF, 0xFF, 0xC0, + 0x6C, 0x06, 0xDB, 0x6D, 0xB6, 0xDB, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, + 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC4, 0xC6, 0xC3, 0xFF, 0xFF, 0xFF, 0xC0, + 0x1C, 0x67, 0xFF, 0xB0, 0xC7, 0x84, 0x3C, 0x21, 0xE1, 0x0F, 0x08, 0x78, + 0x43, 0xC2, 0x1E, 0x10, 0xC0, 0x1C, 0xFE, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x38, 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, + 0x7E, 0x1C, 0xBE, 0xC3, 0xC1, 0xC1, 0x81, 0xC1, 0xC3, 0xE3, 0xBE, 0x80, + 0x80, 0x80, 0x80, 0x1C, 0x1F, 0x58, 0x68, 0x34, 0x1E, 0x0D, 0x06, 0x83, + 0x63, 0x9F, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x1F, 0xF9, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x39, 0xFB, 0x1C, 0x0E, 0x07, 0x81, 0xC1, 0xC7, 0xF8, 0x21, + 0x09, 0xF2, 0x10, 0x84, 0x21, 0x08, 0x70, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7F, 0x41, 0x31, 0x98, 0xC4, 0x42, 0x61, 0xA0, 0x50, + 0x38, 0x18, 0x00, 0xC7, 0x12, 0x38, 0x99, 0x4C, 0xCA, 0x62, 0xDA, 0x14, + 0xD0, 0xE3, 0x87, 0x18, 0x18, 0xC0, 0x63, 0x13, 0x0D, 0x03, 0x81, 0xC0, + 0xE0, 0xD8, 0xC6, 0x43, 0x00, 0x41, 0x31, 0x98, 0xC4, 0x43, 0x61, 0xA0, + 0x50, 0x38, 0x18, 0x0C, 0x06, 0x0E, 0x06, 0x00, 0xFE, 0x08, 0x30, 0xC3, + 0x0C, 0x10, 0x60, 0xFE, 0x36, 0x66, 0x66, 0x4C, 0x84, 0x66, 0x66, 0x66, + 0x30, 0xFF, 0xFF, 0x80, 0xC4, 0x44, 0x44, 0x46, 0x36, 0x44, 0x44, 0x44, + 0x80, 0x60, 0x59, 0x8F, 0xFF, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x60, 0x30, 0x1F, 0xF8, 0x00, 0xF0, 0x7F, 0xFF, 0xC0, + 0x08, 0x1C, 0x7E, 0x4B, 0xC9, 0xC8, 0xC8, 0xC8, 0xCB, 0x6B, 0x3E, 0x08, + 0x08, 0x1F, 0x0C, 0xE6, 0x19, 0x82, 0x60, 0x08, 0x0F, 0xE0, 0x40, 0x10, + 0x04, 0x03, 0x01, 0xF2, 0x7F, 0xC0, 0x07, 0x07, 0xF3, 0x04, 0x80, 0x60, + 0x3F, 0xE6, 0x03, 0xFC, 0x60, 0x18, 0x03, 0x00, 0x61, 0x0F, 0xC0, 0xC0, + 0xD0, 0x22, 0x18, 0xCC, 0x12, 0x07, 0x80, 0xC1, 0xFE, 0x0C, 0x1F, 0xE0, + 0xC0, 0x30, 0x0C, 0x00, 0x12, 0x07, 0x80, 0xC0, 0x00, 0x3F, 0x18, 0x6C, + 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x3C, 0x0D, 0x87, + 0x3F, 0x80, 0x3C, 0x66, 0x62, 0x62, 0x30, 0x5C, 0x8E, 0x83, 0xC1, 0x61, + 0x3B, 0x1E, 0x06, 0xC6, 0x46, 0x7E, 0x38, 0x6C, 0x70, 0x41, 0xCF, 0xD8, + 0xE0, 0x70, 0x3C, 0x0E, 0x0E, 0x3F, 0xC0, 0x1F, 0xC0, 0xC1, 0x86, 0x31, + 0x33, 0x66, 0x88, 0xCA, 0x60, 0x29, 0x80, 0xE6, 0x12, 0x88, 0xCB, 0x36, + 0x66, 0x71, 0x0C, 0x18, 0x1F, 0xC0, 0xF4, 0x9D, 0x29, 0x74, 0x1F, 0x21, + 0x99, 0xA6, 0x4C, 0x90, 0xFF, 0xFF, 0xC0, 0x20, 0x10, 0x08, 0xFF, 0x1F, + 0xC0, 0xC1, 0x86, 0xF1, 0x33, 0xF6, 0x88, 0x4A, 0x23, 0x28, 0xF8, 0xE2, + 0x32, 0x88, 0xCB, 0x23, 0x66, 0x01, 0x0C, 0x18, 0x1F, 0xC0, 0xFF, 0xC0, + 0xF4, 0x63, 0x17, 0x00, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, + 0x10, 0x08, 0x00, 0x3F, 0xE0, 0x39, 0x34, 0x43, 0x19, 0x84, 0x3F, 0x31, + 0x2C, 0xC6, 0x08, 0x1C, 0xDE, 0x11, 0x01, 0x60, 0x18, 0x00, 0x07, 0xFC, + 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x06, 0x01, 0x80, 0x60, + 0x18, 0x03, 0x00, 0xFF, 0xE0, 0xC3, 0x61, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, + 0x0D, 0x8E, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x00, 0x3F, 0x7A, 0xFA, 0xFA, + 0xFA, 0xFA, 0xFA, 0x7A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0xC0, 0x6C, 0x50, 0x40, 0x0F, 0xE0, 0x83, 0x0C, 0x30, 0xC1, 0x06, 0x0F, + 0xE0, 0x27, 0x92, 0x49, 0xF4, 0x63, 0x19, 0x38, 0x1F, 0x93, 0x26, 0x59, + 0x98, 0x40, 0x3F, 0xFF, 0x71, 0xC0, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0x80, 0xC0, 0x80, 0xFF, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0xC0, + 0x61, 0xC0, 0x3F, 0xFF, 0x38, 0x30, 0xFD, 0xFB, 0x0E, 0x1C, 0x18, 0x38, + 0x10, 0x70, 0x3F, 0xE0, 0x40, 0x61, 0x83, 0xC7, 0x84, 0xFD, 0xF8, 0x19, + 0x81, 0x98, 0x00, 0x06, 0x03, 0x60, 0x63, 0x0C, 0x10, 0xC1, 0x98, 0x0D, + 0x00, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x18, + 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, 0x60, 0xC0, 0x83, 0xC2, 0xC6, 0x7C, + 0x0C, 0x00, 0x40, 0x02, 0x00, 0x00, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, + 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x06, 0x60, 0x66, 0x06, + 0xC0, 0x30, 0x01, 0x80, 0x30, 0x06, 0x00, 0x00, 0x06, 0x00, 0xF0, 0x0F, + 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x06, 0x60, + 0x66, 0x06, 0xC0, 0x30, 0x06, 0x00, 0xF0, 0x09, 0x00, 0x00, 0x06, 0x00, + 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, + 0x06, 0x60, 0x66, 0x06, 0xC0, 0x30, 0x0C, 0x81, 0x30, 0x00, 0x00, 0x60, + 0x0F, 0x00, 0xF0, 0x09, 0x01, 0x98, 0x19, 0x81, 0x08, 0x30, 0xC3, 0xFC, + 0x20, 0x66, 0x06, 0x60, 0x6C, 0x03, 0x19, 0x81, 0x98, 0x00, 0x00, 0x60, + 0x0F, 0x00, 0xF0, 0x09, 0x01, 0x98, 0x19, 0x81, 0x08, 0x30, 0xC3, 0xFC, + 0x20, 0x66, 0x06, 0x60, 0x6C, 0x03, 0x0F, 0x00, 0x90, 0x0F, 0x00, 0x00, + 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, + 0x3F, 0xC2, 0x06, 0x60, 0x66, 0x06, 0xC0, 0x30, 0x07, 0xFF, 0x83, 0x60, + 0x01, 0x30, 0x01, 0x98, 0x00, 0x8C, 0x00, 0xC6, 0x00, 0x63, 0xFC, 0x61, + 0x80, 0x3F, 0xC0, 0x10, 0x60, 0x18, 0x30, 0x0C, 0x18, 0x0C, 0x0F, 0xF8, + 0x1F, 0x86, 0x19, 0x81, 0xE0, 0x3C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x78, 0x0D, 0x81, 0xB8, 0x63, 0xF8, 0x08, 0x01, 0x80, 0x10, 0x0E, 0x00, + 0x30, 0x08, 0x02, 0x00, 0x0F, 0xFC, 0x02, 0x01, 0x00, 0x80, 0x40, 0x3F, + 0xD0, 0x08, 0x04, 0x02, 0x01, 0x00, 0xFF, 0x80, 0x04, 0x04, 0x04, 0x00, + 0x0F, 0xFC, 0x02, 0x01, 0x00, 0x80, 0x40, 0x3F, 0xD0, 0x08, 0x04, 0x02, + 0x01, 0x00, 0xFF, 0x80, 0x18, 0x0E, 0x09, 0x00, 0x0F, 0xFC, 0x02, 0x01, + 0x00, 0x80, 0x40, 0x3F, 0xD0, 0x08, 0x04, 0x02, 0x01, 0x00, 0xFF, 0x80, + 0x66, 0x33, 0x00, 0x1F, 0xF8, 0x04, 0x02, 0x01, 0x00, 0x80, 0x7F, 0xA0, + 0x10, 0x08, 0x04, 0x02, 0x01, 0xFF, 0xC6, 0x20, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x20, 0x36, 0x40, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x40, + 0x32, 0xB2, 0x02, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, 0x20, 0xCF, + 0x30, 0x08, 0x20, 0x82, 0x08, 0x20, 0x82, 0x08, 0x20, 0x82, 0x08, 0x3F, + 0x82, 0x0C, 0x20, 0x62, 0x03, 0x20, 0x32, 0x03, 0xFC, 0x32, 0x03, 0x20, + 0x32, 0x03, 0x20, 0x62, 0x1C, 0x3F, 0x80, 0x09, 0x03, 0xE0, 0x00, 0x70, + 0x3E, 0x07, 0xE0, 0xF6, 0x1E, 0xC3, 0xCC, 0x78, 0x8F, 0x19, 0xE1, 0xBC, + 0x17, 0x83, 0xF0, 0x3E, 0x07, 0x0C, 0x00, 0x40, 0x02, 0x00, 0x00, 0x1F, + 0x87, 0x0E, 0x60, 0x6C, 0x03, 0xC0, 0x38, 0x01, 0x80, 0x18, 0x01, 0xC0, + 0x3C, 0x03, 0x60, 0x67, 0x0E, 0x1F, 0x80, 0x03, 0x00, 0x20, 0x04, 0x00, + 0x00, 0x1F, 0x87, 0x0E, 0x60, 0x6C, 0x03, 0xC0, 0x38, 0x01, 0x80, 0x18, + 0x01, 0xC0, 0x3C, 0x03, 0x60, 0x67, 0x0E, 0x1F, 0x80, 0x06, 0x00, 0xF0, + 0x09, 0x00, 0x00, 0x1F, 0x87, 0x0E, 0x60, 0x6C, 0x03, 0xC0, 0x38, 0x01, + 0x80, 0x18, 0x01, 0xC0, 0x3C, 0x03, 0x60, 0x67, 0x0E, 0x1F, 0x80, 0x0C, + 0x81, 0x30, 0x00, 0x01, 0xF8, 0x70, 0xE6, 0x06, 0xC0, 0x3C, 0x03, 0x80, + 0x18, 0x01, 0x80, 0x1C, 0x03, 0xC0, 0x36, 0x06, 0x70, 0xE1, 0xF8, 0x19, + 0x81, 0x98, 0x00, 0x01, 0xF8, 0x70, 0xE6, 0x06, 0xC0, 0x3C, 0x03, 0x80, + 0x18, 0x01, 0x80, 0x1C, 0x03, 0xC0, 0x36, 0x06, 0x70, 0xE1, 0xF8, 0x81, + 0x89, 0xA1, 0x83, 0x89, 0xA1, 0x80, 0x00, 0x01, 0xF9, 0x70, 0xE6, 0x06, + 0xC0, 0xBC, 0x13, 0x82, 0x18, 0x41, 0x8C, 0x1D, 0x83, 0xF0, 0x36, 0x06, + 0x70, 0xE9, 0xF8, 0x30, 0x06, 0x00, 0x80, 0x00, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3C, 0x0B, 0x86, 0x7F, + 0x00, 0x06, 0x03, 0x00, 0x80, 0x00, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3C, 0x0B, 0x86, 0x7F, 0x00, 0x0C, + 0x05, 0x03, 0x20, 0x00, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, + 0x0E, 0x03, 0x80, 0xE0, 0x3C, 0x0B, 0x86, 0x7F, 0x00, 0x33, 0x0C, 0xC0, + 0x02, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, + 0x80, 0xF0, 0x2E, 0x19, 0xFC, 0x01, 0x00, 0x20, 0x04, 0x00, 0x00, 0x60, + 0x36, 0x06, 0x30, 0xC1, 0x0C, 0x19, 0x80, 0xD0, 0x0F, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x80, 0x40, 0x3F, 0x9F, 0xE8, + 0x1C, 0x0E, 0x07, 0x03, 0xFF, 0x7E, 0x20, 0x10, 0x08, 0x00, 0x3E, 0x31, + 0xB0, 0x78, 0x3C, 0x16, 0x7B, 0x3D, 0x83, 0xC0, 0xE0, 0x70, 0x78, 0x7C, + 0xF0, 0x30, 0x0C, 0x02, 0x07, 0x87, 0xE6, 0x10, 0x0C, 0x0E, 0x7F, 0x61, + 0xA0, 0xD8, 0xEF, 0xB8, 0x0C, 0x0C, 0x04, 0x07, 0x87, 0xE6, 0x10, 0x0C, + 0x0E, 0x7F, 0x61, 0xA0, 0xD8, 0xEF, 0xB8, 0x18, 0x16, 0x19, 0x07, 0x87, + 0xE6, 0x10, 0x0C, 0x0E, 0x7F, 0x61, 0xA0, 0xD8, 0xEF, 0xB8, 0x32, 0x3E, + 0x00, 0x07, 0x87, 0xE6, 0x10, 0x0C, 0x0E, 0x7F, 0x61, 0xA0, 0xD8, 0xEF, + 0xB8, 0x66, 0x33, 0x00, 0x07, 0x87, 0xE6, 0x10, 0x0C, 0x0E, 0x7F, 0x61, + 0xA0, 0xD8, 0xEF, 0xB8, 0x18, 0x12, 0x09, 0x03, 0x03, 0xC3, 0xF3, 0x08, + 0x06, 0x07, 0x3F, 0xB0, 0xD0, 0x6C, 0x77, 0xDC, 0x38, 0x71, 0xFF, 0xEC, + 0x30, 0xC0, 0xC1, 0x06, 0x05, 0xFF, 0xFC, 0x20, 0x20, 0xC1, 0xC7, 0x8F, + 0xE7, 0xE0, 0x38, 0x7E, 0xC2, 0x82, 0x80, 0x80, 0x80, 0x83, 0xC6, 0x7C, + 0x10, 0x18, 0x08, 0x78, 0x30, 0x18, 0x08, 0x18, 0x7E, 0xC3, 0xC3, 0x81, + 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x0C, 0x18, 0x10, 0x18, 0x7E, 0xC3, 0xC3, + 0x81, 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x18, 0x34, 0x22, 0x18, 0x7E, 0xC3, + 0xC3, 0x81, 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x66, 0x66, 0x00, 0x18, 0x7E, + 0xC3, 0xC3, 0x81, 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x42, 0x10, 0x22, 0x22, + 0x22, 0x22, 0x20, 0x6C, 0x80, 0x44, 0x44, 0x44, 0x44, 0x40, 0x72, 0xA2, + 0x02, 0x10, 0x84, 0x21, 0x08, 0x42, 0x00, 0xCF, 0x30, 0x00, 0x10, 0x41, + 0x04, 0x10, 0x41, 0x04, 0x10, 0x6C, 0x30, 0x4C, 0x3E, 0x7E, 0xC3, 0x83, + 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x32, 0x7C, 0x00, 0x1C, 0xFE, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x30, 0x10, 0x08, 0x38, 0x7E, + 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x0C, 0x18, 0x10, 0x38, + 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x18, 0x2C, 0x64, + 0x38, 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x32, 0x5C, + 0x00, 0x38, 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x66, + 0x66, 0x00, 0x38, 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, + 0x18, 0x0C, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x30, 0x18, 0x00, 0x1C, + 0x0F, 0xE6, 0x19, 0x8E, 0x44, 0x92, 0x25, 0x09, 0xC6, 0x63, 0x1F, 0xC0, + 0x00, 0x30, 0x10, 0x08, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC7, 0x7F, 0x0C, 0x18, 0x10, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC7, 0x7F, 0x18, 0x2C, 0x64, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7F, 0x66, 0x66, 0x00, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC7, 0x7F, 0x0C, 0x04, 0x04, 0x00, 0x04, 0x13, 0x19, + 0x8C, 0x44, 0x36, 0x1A, 0x05, 0x03, 0x81, 0x80, 0xC0, 0x60, 0xE0, 0x60, + 0x00, 0x80, 0x80, 0x80, 0x9C, 0xBE, 0xC3, 0xC1, 0xC1, 0x81, 0xC1, 0xC3, + 0xE3, 0xBE, 0x80, 0x80, 0x80, 0x80, 0x22, 0x11, 0x00, 0x00, 0x04, 0x13, + 0x19, 0x8C, 0x44, 0x36, 0x1A, 0x05, 0x03, 0x81, 0x80, 0xC0, 0x60, 0xE0, + 0x60, 0x00 }; + +const GFXglyph FreeSans9pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 5, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 2, 13, 5, 2, -12 }, // 0x21 '!' U+0021 + { 5, 4, 5, 6, 1, -12 }, // 0x22 '"' U+0022 + { 8, 10, 13, 10, 0, -12 }, // 0x23 '#' U+0023 + { 25, 8, 16, 10, 1, -13 }, // 0x24 '$' U+0024 + { 41, 14, 13, 16, 1, -12 }, // 0x25 '%' U+0025 + { 64, 10, 13, 12, 1, -12 }, // 0x26 '&' U+0026 + { 81, 2, 5, 3, 1, -12 }, // 0x27 ''' U+0027 + { 83, 4, 17, 6, 1, -12 }, // 0x28 '(' U+0028 + { 92, 4, 17, 6, 1, -12 }, // 0x29 ')' U+0029 + { 101, 5, 5, 7, 1, -12 }, // 0x2a '*' U+002A + { 105, 9, 9, 11, 1, -8 }, // 0x2b '+' U+002B + { 116, 1, 5, 5, 2, -1 }, // 0x2c ',' U+002C + { 117, 4, 2, 6, 1, -5 }, // 0x2d '-' U+002D + { 118, 1, 2, 5, 2, -1 }, // 0x2e '.' U+002E + { 119, 5, 13, 5, 0, -12 }, // 0x2f '/' U+002F + { 128, 8, 13, 10, 1, -12 }, // 0x30 '0' U+0030 + { 141, 4, 13, 10, 2, -12 }, // 0x31 '1' U+0031 + { 148, 8, 13, 10, 1, -12 }, // 0x32 '2' U+0032 + { 161, 8, 13, 10, 1, -12 }, // 0x33 '3' U+0033 + { 174, 9, 13, 10, 0, -12 }, // 0x34 '4' U+0034 + { 189, 8, 13, 10, 1, -12 }, // 0x35 '5' U+0035 + { 202, 8, 13, 10, 1, -12 }, // 0x36 '6' U+0036 + { 215, 8, 13, 10, 1, -12 }, // 0x37 '7' U+0037 + { 228, 8, 13, 10, 1, -12 }, // 0x38 '8' U+0038 + { 241, 8, 13, 10, 1, -12 }, // 0x39 '9' U+0039 + { 254, 2, 9, 5, 2, -8 }, // 0x3a ':' U+003A + { 257, 2, 12, 5, 2, -8 }, // 0x3b ';' U+003B + { 260, 9, 9, 11, 1, -8 }, // 0x3c '<' U+003C + { 271, 9, 4, 11, 1, -5 }, // 0x3d '=' U+003D + { 276, 9, 9, 11, 1, -8 }, // 0x3e '>' U+003E + { 287, 8, 13, 10, 1, -12 }, // 0x3f '?' U+003F + { 300, 16, 16, 18, 1, -12 }, // 0x40 '@' U+0040 + { 332, 12, 13, 12, 0, -12 }, // 0x41 'A' U+0041 + { 352, 10, 13, 12, 1, -12 }, // 0x42 'B' U+0042 + { 369, 11, 13, 13, 1, -12 }, // 0x43 'C' U+0043 + { 387, 10, 13, 13, 2, -12 }, // 0x44 'D' U+0044 + { 404, 9, 13, 12, 2, -12 }, // 0x45 'E' U+0045 + { 419, 8, 13, 11, 2, -12 }, // 0x46 'F' U+0046 + { 432, 12, 13, 14, 1, -12 }, // 0x47 'G' U+0047 + { 452, 11, 13, 13, 1, -12 }, // 0x48 'H' U+0048 + { 470, 1, 13, 5, 2, -12 }, // 0x49 'I' U+0049 + { 472, 8, 13, 9, 0, -12 }, // 0x4a 'J' U+004A + { 485, 11, 13, 12, 1, -12 }, // 0x4b 'K' U+004B + { 503, 9, 13, 10, 1, -12 }, // 0x4c 'L' U+004C + { 518, 13, 13, 15, 1, -12 }, // 0x4d 'M' U+004D + { 540, 11, 13, 13, 1, -12 }, // 0x4e 'N' U+004E + { 558, 12, 13, 14, 1, -12 }, // 0x4f 'O' U+004F + { 578, 9, 13, 12, 2, -12 }, // 0x50 'P' U+0050 + { 593, 12, 14, 14, 1, -12 }, // 0x51 'Q' U+0051 + { 614, 10, 13, 13, 2, -12 }, // 0x52 'R' U+0052 + { 631, 10, 13, 12, 1, -12 }, // 0x53 'S' U+0053 + { 648, 11, 13, 11, 0, -12 }, // 0x54 'T' U+0054 + { 666, 10, 13, 13, 2, -12 }, // 0x55 'U' U+0055 + { 683, 11, 13, 12, 1, -12 }, // 0x56 'V' U+0056 + { 701, 17, 13, 17, 0, -12 }, // 0x57 'W' U+0057 + { 729, 12, 13, 12, 0, -12 }, // 0x58 'X' U+0058 + { 749, 12, 13, 12, 0, -12 }, // 0x59 'Y' U+0059 + { 769, 11, 13, 11, 0, -12 }, // 0x5a 'Z' U+005A + { 787, 4, 17, 5, 1, -12 }, // 0x5b '[' U+005B + { 796, 5, 13, 5, 0, -12 }, // 0x5c '\' U+005C + { 805, 4, 17, 5, 0, -12 }, // 0x5d ']' U+005D + { 814, 7, 7, 8, 1, -12 }, // 0x5e '^' U+005E + { 821, 10, 1, 10, 0, 3 }, // 0x5f '_' U+005F + { 823, 4, 2, 6, 0, -12 }, // 0x60 '`' U+0060 + { 824, 9, 10, 10, 1, -9 }, // 0x61 'a' U+0061 + { 836, 8, 13, 10, 1, -12 }, // 0x62 'b' U+0062 + { 849, 8, 10, 9, 1, -9 }, // 0x63 'c' U+0063 + { 859, 9, 13, 10, 0, -12 }, // 0x64 'd' U+0064 + { 874, 8, 10, 10, 1, -9 }, // 0x65 'e' U+0065 + { 884, 5, 13, 5, 0, -12 }, // 0x66 'f' U+0066 + { 893, 8, 14, 10, 1, -9 }, // 0x67 'g' U+0067 + { 907, 8, 13, 10, 1, -12 }, // 0x68 'h' U+0068 + { 920, 2, 13, 4, 1, -12 }, // 0x69 'i' U+0069 + { 924, 3, 17, 4, 0, -12 }, // 0x6a 'j' U+006A + { 931, 8, 13, 9, 1, -12 }, // 0x6b 'k' U+006B + { 944, 2, 13, 4, 1, -12 }, // 0x6c 'l' U+006C + { 948, 13, 10, 15, 1, -9 }, // 0x6d 'm' U+006D + { 965, 8, 10, 10, 1, -9 }, // 0x6e 'n' U+006E + { 975, 8, 10, 10, 1, -9 }, // 0x6f 'o' U+006F + { 985, 8, 14, 10, 1, -9 }, // 0x70 'p' U+0070 + { 999, 9, 14, 10, 0, -9 }, // 0x71 'q' U+0071 + { 1015, 5, 10, 6, 1, -9 }, // 0x72 'r' U+0072 + { 1022, 7, 10, 9, 1, -9 }, // 0x73 's' U+0073 + { 1031, 5, 12, 5, 0, -11 }, // 0x74 't' U+0074 + { 1039, 8, 9, 10, 1, -8 }, // 0x75 'u' U+0075 + { 1048, 9, 9, 9, 0, -8 }, // 0x76 'v' U+0076 + { 1059, 13, 9, 13, 0, -8 }, // 0x77 'w' U+0077 + { 1074, 9, 9, 9, 0, -8 }, // 0x78 'x' U+0078 + { 1085, 9, 13, 9, 0, -8 }, // 0x79 'y' U+0079 + { 1100, 7, 9, 9, 1, -8 }, // 0x7a 'z' U+007A + { 1108, 4, 17, 6, 1, -12 }, // 0x7b '{' U+007B + { 1117, 1, 17, 5, 2, -12 }, // 0x7c '|' U+007C + { 1120, 4, 17, 6, 1, -12 }, // 0x7d '}' U+007D + { 1129, 8, 3, 11, 1, -7 }, // 0x7e '~' U+007E + { 1132, 9, 13, 13, 2, -12 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 1147, 1, 1, 5, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 1148, 2, 13, 5, 2, -8 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 1152, 8, 13, 10, 1, -10 }, // 0x82 'CENT SIGN' U+00A2 + { 1165, 10, 13, 10, 0, -12 }, // 0x83 'POUND SIGN' U+00A3 + { 1182, 10, 13, 12, 1, -12 }, // 0x84 'EURO SIGN *' U+20AC + { 1199, 10, 13, 10, 0, -12 }, // 0x85 'YEN SIGN' U+00A5 + { 1216, 10, 17, 12, 1, -16 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 1238, 8, 17, 10, 1, -12 }, // 0x87 'SECTION SIGN' U+00A7 + { 1255, 7, 13, 9, 1, -12 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 1267, 14, 13, 13, 0, -12 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 1290, 5, 8, 7, 1, -12 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 1295, 6, 6, 8, 1, -7 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 1300, 9, 5, 11, 1, -6 }, // 0x8c 'NOT SIGN' U+00AC + { 1306, 4, 2, 6, 1, -5 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 1307, 14, 13, 13, 0, -12 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 1330, 5, 2, 6, 0, -12 }, // 0x8f 'MACRON' U+00AF + { 1332, 5, 5, 11, 3, -11 }, // 0x90 'DEGREE SIGN' U+00B0 + { 1336, 9, 11, 11, 1, -10 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 1349, 6, 8, 6, 0, -12 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 1355, 6, 8, 6, 0, -12 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 1361, 11, 17, 11, 0, -16 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 1385, 9, 13, 10, 1, -8 }, // 0x95 'MICRO SIGN' U+00B5 + { 1400, 8, 16, 10, 1, -12 }, // 0x96 'PILCROW SIGN' U+00B6 + { 1416, 1, 2, 5, 2, -5 }, // 0x97 'MIDDLE DOT' U+00B7 + { 1417, 7, 13, 9, 1, -12 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 1429, 3, 8, 6, 1, -12 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 1432, 5, 8, 7, 1, -12 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 1437, 6, 6, 8, 1, -7 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 1442, 16, 13, 18, 1, -12 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 1468, 15, 10, 17, 1, -9 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 1487, 12, 16, 12, 0, -15 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 1511, 8, 13, 10, 2, -8 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 1524, 12, 17, 12, 0, -16 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 1550, 12, 17, 12, 0, -16 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 1576, 12, 17, 12, 0, -16 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 1602, 12, 16, 12, 0, -15 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 1626, 12, 16, 12, 0, -15 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 1650, 12, 17, 12, 0, -16 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 1676, 17, 13, 18, 0, -12 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 1704, 11, 17, 13, 1, -12 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 1728, 9, 17, 12, 2, -16 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 1748, 9, 17, 12, 2, -16 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 1768, 9, 17, 12, 2, -16 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 1788, 9, 16, 12, 2, -15 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 1806, 4, 17, 5, 0, -16 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 1815, 4, 17, 5, 1, -16 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 1824, 5, 17, 5, 0, -16 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 1835, 6, 16, 5, 0, -15 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 1847, 12, 13, 13, 0, -12 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 1867, 11, 16, 13, 1, -15 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 1889, 12, 17, 14, 1, -16 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 1915, 12, 17, 14, 1, -16 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 1941, 12, 17, 14, 1, -16 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 1967, 12, 16, 14, 1, -15 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 1991, 12, 16, 14, 1, -15 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 2015, 7, 7, 11, 2, -7 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 2022, 12, 14, 14, 1, -13 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 2043, 10, 17, 13, 2, -16 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 2065, 10, 17, 13, 2, -16 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 2087, 10, 17, 13, 2, -16 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 2109, 10, 16, 13, 2, -15 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 2129, 12, 17, 12, 0, -16 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 2155, 9, 13, 12, 2, -12 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 2170, 9, 13, 11, 1, -12 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 2185, 9, 13, 10, 1, -12 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 2200, 9, 13, 10, 1, -12 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 2215, 9, 13, 10, 1, -12 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 2230, 9, 13, 10, 1, -12 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 2245, 9, 13, 10, 1, -12 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 2260, 9, 14, 10, 1, -13 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 2276, 14, 10, 16, 1, -9 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 2294, 8, 14, 9, 1, -9 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 2308, 8, 13, 10, 1, -12 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 2321, 8, 13, 10, 1, -12 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 2334, 8, 13, 10, 1, -12 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 2347, 8, 13, 10, 1, -12 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 2360, 4, 13, 5, 0, -12 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 2367, 4, 13, 5, 1, -12 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 2374, 5, 13, 5, 0, -12 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 2383, 6, 13, 5, -1, -12 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 2393, 8, 13, 10, 1, -12 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 2406, 8, 13, 10, 1, -12 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 2419, 8, 13, 10, 1, -12 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 2432, 8, 13, 10, 1, -12 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 2445, 8, 13, 10, 1, -12 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 2458, 8, 13, 10, 1, -12 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 2471, 8, 13, 10, 1, -12 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 2484, 9, 9, 11, 1, -8 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 2495, 10, 11, 11, 0, -9 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 2509, 8, 13, 10, 1, -12 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 2522, 8, 13, 10, 1, -12 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 2535, 8, 13, 10, 1, -12 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 2548, 8, 13, 10, 1, -12 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 2561, 9, 17, 9, 0, -12 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 2581, 8, 17, 10, 1, -12 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 2598, 9, 17, 9, 0, -12 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeSans9pt8b PROGMEM = { + (uint8_t *)FreeSans9pt8bBitmaps, + (GFXglyph *)FreeSans9pt8bGlyphs, + 0x20, 0xDF, 25 }; + +// Approx. 3969 bytes diff --git a/RX_FSK/src/fonts/fonts.cpp b/RX_FSK/src/fonts/fonts.cpp new file mode 100644 index 0000000..9459f82 --- /dev/null +++ b/RX_FSK/src/fonts/fonts.cpp @@ -0,0 +1,25 @@ +#include +#include "gfxfont.h" + +#define PROGMEM + +#include "FreeMono12pt8b.h" +#include "FreeMono9pt8b.h" +#include "FreeSans12pt8b.h" +#include "FreeSans18pt8b.h" +#include "FreeSans9pt8b.h" +#include "Picopixel.h" +#include "Terminal11x16.h" + +__attribute__((used)) const GFXfont * const allfonts[]={ + (const GFXfont *)0x544E4F46, + &Terminal11x16Font, + &Terminal11x16Font, + &FreeSans9pt8b, + &FreeSans12pt8b, + &Picopixel, + &FreeSans18pt8b, + &FreeMono9pt8b, + &FreeMono12pt8b, + 0, +}; diff --git a/RX_FSK/src/fonts/gfxfont.h b/RX_FSK/src/fonts/gfxfont.h new file mode 100644 index 0000000..42cfcfc --- /dev/null +++ b/RX_FSK/src/fonts/gfxfont.h @@ -0,0 +1,31 @@ +// Font structures for newer Adafruit_GFX (1.1 and later). +// Example fonts are included in 'Fonts' directory. +// To use a font in your Arduino sketch, #include the corresponding .h +// file and pass address of GFXfont struct to setFont(). Pass NULL to +// revert to 'classic' fixed-space bitmap font. + +#ifndef _GFXFONT_H_ +#define _GFXFONT_H_ + +/// Font data stored PER GLYPH +typedef struct +{ + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +/// Data stored for FONT AS A WHOLE +typedef struct +{ + uint8_t *bitmap; ///< Glyph bitmaps, concatenated + GFXglyph *glyph; ///< Glyph array + uint8_t first; ///< ASCII extents (first char) + uint8_t last; ///< ASCII extents (last char) + uint8_t yAdvance; ///< Newline distance (y axis) +} GFXfont; + +#endif // _GFXFONT_H_ diff --git a/fontlink.ld b/fontlink.ld new file mode 100644 index 0000000..be9046d --- /dev/null +++ b/fontlink.ld @@ -0,0 +1,6 @@ +SECTIONS { + .rodata 0x00 : + { + *(.rodata) + } +} diff --git a/platformio.ini b/platformio.ini index fc3488f..19aa9d9 100644 --- a/platformio.ini +++ b/platformio.ini @@ -10,12 +10,12 @@ [platformio] src_dir = RX_FSK -lib_dir = RX_FSK +;# lib_dir = RX_FSK data_dir = RX_FSK/data [extra] lib_deps_builtin = - src +; src lib_deps_external = olikraus/U8g2 @ ^2.28.8 AXP202X_Library @@ -34,6 +34,14 @@ lib_deps = ${extra.lib_deps_external} paulstoffregen/Time@^1.6.0 lib_ignore = Time -; board_build.partitions = partition.csv -;build_flags = -Wl,-Map,output.map -;check_tool = clangtidy + +; Add / remove the following two lines for separate fonts partition in flash +; after changes: +; - pio run --target=upload (uploads partition table) +; - pio run --target=uploadfs (uploads file system matching the new partition table) +; if enable also do: +; - pio run --target=uploadfonts (uploads fonts.bin created during the first pio run) +; Then everything should be "back to normal" +; +extra_scripts = post:scripts/makefontpartition.py +;board_build.partitions = partition-fonts.csv diff --git a/scripts/makefontpartition.py b/scripts/makefontpartition.py new file mode 100755 index 0000000..758a7f9 --- /dev/null +++ b/scripts/makefontpartition.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +Import("env") + +env.AddPostAction( + "$BUILD_DIR/${PROGNAME}.elf", + env.VerboseAction(" ".join([ + "xtensa-esp32-elf-ld", "-T", "fontlink.ld", "--oformat=binary", "-o", "$BUILD_DIR/fonts.bin", "$BUILD_DIR/src/src/fonts/fonts.cpp.o" ]), + "Building $BUILD_DIR/fonts.bin") +) + +env.AddCustomTarget( + "uploadfonts", + "$BUILD_DIR/fonts.bin", + "scripts/uploadfonts.py $BUILD_DIR/fonts.bin $PARTITIONS_TABLE_CSV" +) diff --git a/scripts/uploadfonts.py b/scripts/uploadfonts.py new file mode 100755 index 0000000..e15826f --- /dev/null +++ b/scripts/uploadfonts.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +import requests +import sys +import os +import socket +import esptool + +if len(sys.argv)<3: + print("Usage: uploadfonts Date: Sun, 26 Sep 2021 13:15:28 +0200 Subject: [PATCH 2/5] now utf8 --- RX_FSK/data/screens1.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RX_FSK/data/screens1.txt b/RX_FSK/data/screens1.txt index 0844148..0fe6736 100644 --- a/RX_FSK/data/screens1.txt +++ b/RX_FSK/data/screens1.txt @@ -203,7 +203,7 @@ timeaction=#,#,# 7,0=gV 7,2=xd= 7,4=gD -7,12=gI° +7,12=gI° ############ @BatteryOLED @@ -235,7 +235,7 @@ fonts=0,1 0,9=f 1,12=t 2,0=xTelemetry Data -4,0=Mt°C +4,0=Mt°C 4,9=Mh%rH 6,0=MphPa 6,11=MbV From 2186482fb8789abd6da8aef7b02b59ef590a762f Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Sun, 26 Sep 2021 13:52:28 +0200 Subject: [PATCH 3/5] RS41-SGP hum calc with real pressure --- .travis.yml | 8 ++++++-- RX_FSK/src/RS41.cpp | 19 +++++++++++++------ RX_FSK/version.h | 2 +- scripts/makeimage.py | 4 ++++ 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8a080d5..9e0d917 100644 --- a/.travis.yml +++ b/.travis.yml @@ -52,8 +52,12 @@ install: - arduino --install-library "GFX Library for Arduino" script: - arduino --board esp32:esp32:t-beam --verify $PWD/RX_FSK/RX_FSK.ino - - find build - - find /home/travis/.arduino15/packages/esp32/hardware/esp32/ + - ESPPATH=`arduino --get-pref runtime.tools.xtensa-esp32-elf-gcc.path` + - $ESPPATH/bin/xtensa-esp32-elf-c++ -c RX_FSK/src/fonts/fonts.cpp -o /tmp/fonts.o + - $ESPPATH/bin/xtensa-esp32-elf-ld -T fontlink.ld --oformat=binary -o /tmp/fonts.bin /tmp/fonts.o + - ls -la /tmp/fonts.bin + #- find build + #- find /home/travis/.arduino15/packages/esp32/hardware/esp32/ - $PWD/scripts/makeimage.py $ESP32TOOLS $PWD/build/RX_FSK.ino.bin $PWD/RX_FSK/data $PWD/out.bin after_success: - .travis/push.sh diff --git a/RX_FSK/src/RS41.cpp b/RX_FSK/src/RS41.cpp index ce6768d..9a9668a 100644 --- a/RX_FSK/src/RS41.cpp +++ b/RX_FSK/src/RS41.cpp @@ -613,7 +613,7 @@ float GetRATemp( uint32_t measuredCurrent, uint32_t refMin, uint32_t refMax, flo } // taken from https://github.com/einergehtnochrein/ra-firmware -float GetRAHumidity( uint32_t humCurrent, uint32_t humMin, uint32_t humMax, float sensorTemp, float externalTemp ) { +float GetRAHumidity( uint32_t humCurrent, uint32_t humMin, uint32_t humMax, float sensorTemp, float externalTemp, float pressure ) { struct subframeBuffer *calibration = (struct subframeBuffer *)sonde.si()->extra; float current = float( humCurrent - humMin) / float( humMax - humMin ); /* Compute absolute capacitance from the known references */ @@ -624,12 +624,15 @@ float GetRAHumidity( uint32_t humCurrent, uint32_t humMin, uint32_t humMax, floa float Cp = ( C / calibration->value.calibU[0] - 1.0f) * calibration->value.calibU[1]; /* Compensation for low temperature and pressure at altitude */ - float estimatedPressure = 1013.25f * expf(-1.18575919e-4f * sonde.si()->d.alt ); + if(isnan(pressure)) { + // if no pressure is available (non-SGP), estimate based on altitude + pressure = 1013.25f * expf(-1.18575919e-4f * sonde.si()->d.alt ); + } float Tp = (sensorTemp - 20.0f) / 180.0f; float sum = 0; float powc = 1.0f; - float p = estimatedPressure / 1000.0f; + float p = pressure / 1000.0f; for ( int i = 0; i < 3; i++) { float l = 0; float powt = 1.0f; @@ -792,10 +795,14 @@ int RS41::decode41(byte *data, int maxlen) Serial.printf( "Pressure sens: pressureMain = %ld, pressureRef1 = %ld, pressureRef2 = %ld\n", pressureMain, pressureRef1, pressureRef2 ); #endif struct subframeBuffer *calibration = (struct subframeBuffer *)(sonde.si()->extra); - // check for bits 3 through 20 set and 37 through 46 + // temp: 0xF8==bits 3..7 : we need refResistorlow/high, taylorT, polyT bool validExternalTemperature = calibration!=NULL && (calibration->valid & 0xF8) == 0xF8; + + // humidity: bits 3..20 and 37..46. + // (note: we check validPressure below as well, thus we only calculate humidity of bit 33 (variant) is available as well) bool validHumidity = calibration!=NULL && (calibration->valid & 0x7FE0001FFFF8) == 0x7FE0001FFFF8; + // pressure: bits 33 and 37..42 (variant; x25..x2a: matrixP) /// CALIB_P is 0x7E200000000) bool validPressure = calibration!=NULL && (calibration->valid & CALIB_P)==CALIB_P && calibration->value.names.variant[7]=='P'; if ( validPressure ) { @@ -809,11 +816,11 @@ int RS41::decode41(byte *data, int maxlen) Serial.printf("External temperature = %f\n", si->temperature ); } - if ( validHumidity && validExternalTemperature ) { + if ( validHumidity && validExternalTemperature & validPressure ) { si->tempRHSensor = GetRATemp( tempHumiMain, tempHumiRef1, tempHumiRef2, calibration->value.calTU, calibration->value.taylorTU, calibration->value.polyTrh ); Serial.printf("Humidity Sensor temperature = %f\n", si->tempRHSensor ); - si->relativeHumidity = GetRAHumidity( humidityMain, humidityRef1, humidityRef2, si->tempRHSensor, si->temperature ); + si->relativeHumidity = GetRAHumidity( humidityMain, humidityRef1, humidityRef2, si->tempRHSensor, si->temperature, si->pressure ); Serial.printf("Relative humidity = %f\n", si->relativeHumidity ); } } diff --git a/RX_FSK/version.h b/RX_FSK/version.h index 916164c..e1db54f 100644 --- a/RX_FSK/version.h +++ b/RX_FSK/version.h @@ -1,4 +1,4 @@ const char *version_name = "rdzTTGOsonde"; -const char *version_id = "devel20210925"; +const char *version_id = "devel20210926"; const int SPIFFS_MAJOR=2; const int SPIFFS_MINOR=16; diff --git a/scripts/makeimage.py b/scripts/makeimage.py index b51d710..ef79ac8 100755 --- a/scripts/makeimage.py +++ b/scripts/makeimage.py @@ -1,5 +1,6 @@ #!/usr/bin/python import os +import os.path import sys import csv import subprocess @@ -29,6 +30,9 @@ data_dir = sys.argv[3] file_out = sys.argv[4] partition = esp32tools + "/partitions/default.csv" +if os.path.isfile("RX_FSK/partitions.csv"): + partition = "RX_FSK/partitions.csv" + with open(partition, 'rb') as csvfile: partreader = csv.reader(csvfile, delimiter=',') for row in partreader: From c6a7255d0596eba1beff1a4656b41cf8ec69876d Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Sun, 26 Sep 2021 14:42:21 +0200 Subject: [PATCH 4/5] missing mod. show dist/dir to fixed rxpos if not gps --- RX_FSK/src/Display.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RX_FSK/src/Display.cpp b/RX_FSK/src/Display.cpp index 0be9a47..810925a 100644 --- a/RX_FSK/src/Display.cpp +++ b/RX_FSK/src/Display.cpp @@ -1460,15 +1460,15 @@ void Display::calcGPS() { } // distance if( valid && (sonde.si()->d.validPos&0x03)==0x03 && (layout->usegps&GPSUSE_DIST)) { - gpsDist = (int)calcLatLonDist(gpsPos.lat, gpsPos.lon, sonde.si()->d.lat, sonde.si()->d.lon); + gpsDist = (int)calcLatLonDist(mylat, mylon, sonde.si()->d.lat, sonde.si()->d.lon); } else { gpsDist = -1; } // bearing if( valid && (sonde.si()->d.validPos&0x03)==0x03 && (layout->usegps&GPSUSE_BEARING)) { - float lat1 = radians(gpsPos.lat); + float lat1 = radians(mylat); float lat2 = radians(sonde.si()->d.lat); - float lon1 = radians(gpsPos.lon); + float lon1 = radians(mylon); float lon2 = radians(sonde.si()->d.lon); float y = sin(lon2-lon1)*cos(lat2); float x = cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1); From 85be031a6baa9b426284a70f8f0a616fb82ca1d1 Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Sun, 26 Sep 2021 15:05:22 +0200 Subject: [PATCH 5/5] RS41-SGP hum calc with real pressure. now correct. --- RX_FSK/src/RS41.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/RX_FSK/src/RS41.cpp b/RX_FSK/src/RS41.cpp index 9a9668a..086305a 100644 --- a/RX_FSK/src/RS41.cpp +++ b/RX_FSK/src/RS41.cpp @@ -798,9 +798,8 @@ int RS41::decode41(byte *data, int maxlen) // temp: 0xF8==bits 3..7 : we need refResistorlow/high, taylorT, polyT bool validExternalTemperature = calibration!=NULL && (calibration->valid & 0xF8) == 0xF8; - // humidity: bits 3..20 and 37..46. - // (note: we check validPressure below as well, thus we only calculate humidity of bit 33 (variant) is available as well) - bool validHumidity = calibration!=NULL && (calibration->valid & 0x7FE0001FFFF8) == 0x7FE0001FFFF8; + // humidity: bits 3..20 and 37..46. and bit 33 (variant) + bool validHumidity = calibration!=NULL && (calibration->valid & 0x7FE2001FFFF8) == 0x7FE2001FFFF8; // pressure: bits 33 and 37..42 (variant; x25..x2a: matrixP) /// CALIB_P is 0x7E200000000) bool validPressure = calibration!=NULL && (calibration->valid & CALIB_P)==CALIB_P && calibration->value.names.variant[7]=='P'; @@ -816,7 +815,7 @@ int RS41::decode41(byte *data, int maxlen) Serial.printf("External temperature = %f\n", si->temperature ); } - if ( validHumidity && validExternalTemperature & validPressure ) { + if ( validHumidity && validExternalTemperature ) { si->tempRHSensor = GetRATemp( tempHumiMain, tempHumiRef1, tempHumiRef2, calibration->value.calTU, calibration->value.taylorTU, calibration->value.polyTrh ); Serial.printf("Humidity Sensor temperature = %f\n", si->tempRHSensor );